在我的上下文中,我将删除一个现有实体。在同一个上下文中,我试图使用下面的代码添加一个新实体:
if (entity != null && EFContext.Entry(entity).State == EntityState.Detached)
{
try
{
var entityName = entity.GetType().Name;
GetObjectContext.AddObject(entityName + "s", entity);
}
catch (Exception ex)
{
log(ex);
throw;
}
}
我遇到的问题是当我将新创建的实体传递给上面的方法时,当它检查实体状态时,它会抛出异常: *
与处于Deleted状态的实体添加关系是 不允许
我还没与删除的实体建立任何关系,为什么会抛出此异常?我试图在另一个简单的项目上重现这个问题,但无法在那里重现它。 有谁知道为什么EF会抛出那个例外?
更新 我有学生和背包实体。背包参考学生(一对多)。在我的情况下,我正在删除其中一个背包,并试图创建一个新的学生实体。当我检查对象状态时,我得到上面的例外。
答案 0 :(得分:0)
EFContext.Entry(entity)此时将实体添加到上下文中。
这里的问题很可能是你删除的背包在被删除之后可能有一个FK设置为0或什么?如果是这样,那么当你添加这个新学生时,那个被删除的学生最终会在这个新学生的上下文之下,因为它还有一个ID为0。作为临时修复,尝试在调用Entry(实体)之前将此新Student的PK设置为-1,并查看是否有任何效果。