IEntityChangeTracker的多个实例不能引用实体对象(再次)

时间:2014-05-31 15:10:15

标签: c# asp.net-mvc-5 entity-framework-6

我检查了其他问题,我使用相同的DbContext进行多项操作,所以这不是问题。

我有一个MVC控制器。在这个控制器内部,我正在做以下事情:

var invites = await (from i in _db.Invitations
                     where i.User.Id == user.Id && i.Flat.Id == flat.Id
                     select i).ToListAsync();
_db.Invitations.RemoveRange(invites); //Error here
await _db.SaveChangesAsync();

有人可以向我解释错误发生的原因吗?

非常感谢!

编辑:感谢您的回答,我会尝试这个。目前我正在为我的应用程序中的每个控制器实例化我的DbContext。

private readonly ApplicationDbContext _db = new ApplicationDbContext();

实际上我不喜欢在DbContext中使用单例。它应该有另一种方式。也许我会尝试禁用ChangeTracking或对每个动作使用using。

非常感谢。明天我会告诉你我选择哪种解决方案。

嗯,虽然我有

,但我收到了错误
using(var db = new ApplicationDbContext){
    ...
}
围绕它...任何想法?

1 个答案:

答案 0 :(得分:0)

我不知道为什么,但似乎确实存在其他ApplicationDbContexts的引用。由于我不喜欢(完整的)静态方法,我现在在每个请求中创建一个ApplicationDbContext,如下所示: https://stackoverflow.com/a/10153406/1636718

感谢您的帮助!