Entity framework 附加和实体状态。已分离
为什么在本文中: 我们已检查EntityState.是否在Delete方法中分离,然后在Attach中分离,在Update方法中未检查:Entity framework 附加和实体状态。已分离,entity-framework,Entity Framework,为什么在本文中: 我们已检查EntityState.是否在Delete方法中分离,然后在Attach中分离,在Update方法中未检查: public virtual void Delete(TEntity entityToDelete) { if (context.Entry(entityToDelete).State == EntityState.Detached) { dbSet.Attach(entityToDele
public virtual void Delete(TEntity entityToDelete)
{
if (context.Entry(entityToDelete).State == EntityState.Detached)
{
dbSet.Attach(entityToDelete);
}
dbSet.Remove(entityToDelete);
}
public virtual void Update(TEntity entityToUpdate)
{
dbSet.Attach(entityToUpdate);
context.Entry(entityToUpdate).State = EntityState.Modified;
}
这两种方法不同的原因是,在本教程中有另一种方法调用delete:
public virtual void Delete(object id)
{
TEntity entityToDelete = dbSet.Find(id);
Delete(entityToDelete);
}
因此,如果Delete(TEntity entityToDelete)是从客户端事件调用的,它应该像在Update方法中一样首先被附加,但是如果它是作为服务器端处理的一部分从Delete(object id)调用的,它将已经被附加
<> P>安全:<强>最好在更改强>之前检查它是否被连接:具体地考虑:在将来,修订可能会发布一个同样可以调用更新方法的服务器方法。 < P> > <强>应该>,不是<强>必须< /强>。您可以执行更新和删除,而无需附加。但是,这会导致代码变得不安全,更容易出错
如果您试图删除或更新分离的实体,您将遇到异常,如果您没有计划处理它,您的应用程序将崩溃并停止工作…这个问题有一个很长的答案,但我会给您一个简短的场景。。假设要更新分离对象的ID。框架如何知道需要更新哪些内容?你的回答是正确的,但我认为他在评论中问的是,为什么首先要有一个附加/分离的机制。