删除实体框架中的实体

时间:2013-11-16 13:30:59

标签: c# .net entity-framework

我有这个实体:

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。

你知道如何解决这个问题吗? 谢谢

2 个答案:

答案 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