【发布时间】:2014-08-05 23:30:43
【问题描述】:
我有这个实体:
public class User
{
public string UserName { get; set; }
public string PasswordHash { get; set; }
public string Mail { get; set; }
public Image Photo { get; set; }
public virtual List<Right> Rights { get; set; }
public string Info { get; set; }
public User()
{
Rights = new List<Right>();
}
}
我正在尝试以这种方式删除它:
public void Delete(User user)
{
using (var db = new MyDbContext)
{
db.Rights.RemoveRange(user.Rights);
db.Users.Remove(user);
db.SaveChanges();
}
}
在我的上下文中,Image 和 Right 也是实体。在此删除中,我希望删除用户的权限,删除用户本身,但图像应保留在数据库中。
但是执行时抛出以下异常:
An unhandled exception of type 'System.ObjectDisposedException' occurred in EntityFramework.dll
Additional information: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
我正在使用 EF 6。
你知道如何解决这个问题吗? 谢谢
【问题讨论】:
-
这真的是引发错误的代码吗?从错误消息中可以看出,您在处理完上下文后正在尝试做某事。
-
哦,你说得对,实体的上下文已经被释放 :) 但是我怎样才能删除从不同上下文加载的实体呢?在实体中保留对该上下文的引用是一种好习惯吗?
-
您可以将实体附加到新上下文。
标签: c# .net entity-framework