我有这个实体:
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。
你知道如何解决这个问题吗? 谢谢
答案 0 :(得分:1)
我会一直这样做。
var db = new DatabaseEntities();
var item = db.TableName.Where(x=>x.id == id).FirstOrDefault();
db.TableName.Remove(item);
db.SaveChanges();
我希望这是有道理的。
答案 1 :(得分:0)
在您的情况下,ObjectContext
的{{1}}可能已被处理。因此,您需要重新读取要删除的对象(user
)。
userToDelete