我正在使用EF 4.0开发winform应用程序。
在代码下面,崩溃问题'由于没有附加到ObjectStateManager,因此无法分离对象。当它试图从上下文中分离列表时。
public List<Users> FindUserList()
{
List<Users> lstUsers = null;
var q = from c in context.Users
select c;
lstUsers = q.ToList();
//context.Detach(lstUsers.First());
context.Detach(lstUsers);
return lstUsers;
}
令人惊讶的是,如果我从列表中只分离一个对象,就像我在评论代码中所做的那样,它可以正常工作。
有人可以告诉,为什么它在尝试分离列表时崩溃了?另外,我们如何分离列表中的所有对象?
答案 0 :(得分:1)
这是因为lstUsers
不是实体。但是由lstUsers.First()
返回的实体由EF跟踪。
答案 1 :(得分:0)
尝试将.AsNoTracking()
添加到Users
DbSet以将其与上下文分离。见下文。
List<Users> lstUsers = null;
var q = from c in context.Users.AsNoTracking()
select c;
lstUsers = q.ToList();
return lstUsers;
MSDN参考
https://msdn.microsoft.com/en-us/library/gg679352(v=vs.103).aspx
有关AsNoTracking
的StackOverflow问题
What difference does .AsNoTracking() make?