实体框架 - 崩溃对象的分离列表

时间:2011-09-29 09:04:27

标签: winforms entity-framework-4 objectcontext detach

我正在使用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;
        }

令人惊讶的是,如果我从列表中只分离一个对象,就像我在评论代码中所做的那样,它可以正常工作。

有人可以告诉,为什么它在尝试分离列表时崩溃了?另外,我们如何分离列表中的所有对象?

2 个答案:

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