gpt4 book ai didi

asp.net-mvc - 无法删除该对象,因为在 ObjectStateManager 中找不到它

转载 作者:行者123 更新时间:2023-12-05 01:26:14 31 4
gpt4 key购买 nike

我有这样的东西:

public void Delete(T entity)
{
Context.DeleteObject(entity);
Context.SaveChanges();
}

我得到了一个异常(exception):“无法删除该对象,因为在 ObjectStateManager 中找不到它。”如果我尝试使用 AttachTo() 将实体添加到 objectContext,我得到:

“ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。”

怎么了?

示例:

namespace CAFM.Data.Repository
{
public abstract class RepositoryBase<T> : IRepository<T>
where T : EntityObject
{
public RepositoryBase()
: this(new CAFMRepositoryContext())
{
}
static RepositoryBase()
{
}
public RepositoryBase(IRepositoryContext repositoryContext)
{
_context = repositoryContext ?? new CAFMRepositoryContext();
_entity = _repositoryContext.ObjectContext.CreateObjectSet<T>();
}
private readonly ObjectContext _context;
private readonly ObjectSet<T> _entity;
protected ObjectContext Context
{
get { return _context; }
}
protected IObjectSet<T> Entity
{
get { return _entity; }
}



#region IRepository Members

private string GetEntityName()
{
return string.Format("{0}.{1}", _entity.EntitySet.EntityContainer, _entity.EntitySet.Name);
}
public T Add(T entity)
{
var fqen = GetEntityName();
Context.AddObject(fqen, entity);
Context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
return entity;
}
public T Update(T entity)
{
Context.ApplyCurrentValues(GetEntityName(), entity);
Context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
return entity;
}
public void Delete(T entity)
{
Context.DeleteObject(entity);
Context.SaveChanges();
}
#endregion
}
}

最佳答案

您必须首先从上下文中获取要删除的实体。最好通过比较主键来做到这一点。它可能看起来像这样,但我不知道 TabMasterTabMasterViewModel 的对象结构,所以属性可能命名错误。

public void Delete(TabMasterViewModel entity) { 
TabMaster des = _tabmasterRepository.FirstOrDefault( e.Id = entity.ID );
if (des != null) {
_tabmasterRepository.Delete(des);
}
}

您已经创建了一个新实体并将 View 模型中的值映射到该实体。但是上下文并不知道这个实体,所以他不能删除它。

关于asp.net-mvc - 无法删除该对象,因为在 ObjectStateManager 中找不到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6263660/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com