0
在我的上下文中,我删除了一个现有实体。而在同样的情况下,我尝试添加一个新的实体,使用下面的代码:实体框架:在删除后向添加物添加新实体的问题
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;
}
}
我是当我通过新创建的实体,以上述方法的问题,当检查实体状态,它抛出异常: *
添加与在已删除状态的实体的关系 不允许
我还没有做出与删除的实体,为什么没有任何关系它会抛出这个异常吗?我试图在另一个简单的项目上重现问题,但无法在那里重现它。 有谁知道为什么EF会抛出异常?
更新: 我有学生和背包实体。背包引用学生(一对多)。就我而言,我正在删除其中一个背包,并试图创建一个新的学生实体。当我检查对象状态时,我得到上面的异常。
那么实体只有原始属性?你确定它没有关联的实体可能与关联的实体相同吗? –
@AlexPaven不,它不是直接或间接地引用被删除的实体。我有学生和背包实体。背包参考学生。我删除了学生的背包之一。现在正在尝试创建一个新的学生实体。当我检查新创建的实体的状态时,我得到异常。我也通过创建一个根本没有关联的实体进行验证,我仍然得到相同的异常。 – Dilshod
这听起来很奇怪。我很好奇这个异常的栈跟踪是什么。但是,从我的头顶上看,只要给出这个信息,我就不会想到会导致这种情况。除非定义了主键,否则EF会决定新添加的实体与删除的实体相同,或者类似的东西。 –