user899055
user899055

Reputation: 301

Entity Framework - Crash on Detaching list of objects

I am working on a winform application with EF 4.0.

Below code, crashes with issue 'The object cannot be detached because it is not attached to the ObjectStateManager.' when it tries to detach the list from context.

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;
        }

Surprisingly, it works fine if I detach only one object from the list as I have done in the commented code.

Can someone tell, why it crashes when it tries to detach a list? Also, How can we detach all objects of the list?

Upvotes: 0

Views: 556

Answers (2)

ichpuchtli
ichpuchtli

Reputation: 1

Try adding .AsNoTracking() to the Users DbSet to detach it from the context. See below.

List<Users> lstUsers = null;
var q = from c in context.Users.AsNoTracking()
       select c;
 lstUsers = q.ToList();
 return lstUsers;

MSDN Reference
https://msdn.microsoft.com/en-us/library/gg679352(v=vs.103).aspx

StackOverflow question regarding AsNoTracking What difference does .AsNoTracking() make?

Upvotes: 0

Eranga
Eranga

Reputation: 32447

That is because lstUsers is not an entity. But the entity returned by lstUsers.First() is tracked by EF.

Upvotes: 1

Related Questions