Entity Framework - Сбой при отключении списка объектов - PullRequest
0 голосов
/ 29 сентября 2011

Я работаю над приложением winform с EF 4.0.

Ниже кода происходит сбой с проблемой «Объект не может быть отсоединен, потому что он не присоединен к 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 ]

1 голос
/ 29 сентября 2011

Это потому, что lstUsers не является сущностью.Но сущность, возвращаемая lstUsers.First(), отслеживается EF.

0 голосов
/ 21 октября 2015

Попробуйте добавить .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

Вопрос StackOverflow относительно AsNoTracking Какое значение имеет .AsNoTracking ()?

...