此 ObjectContext 实例已释放,不可再用于需要连接的操作?


环境 .net framework4.5 , entityframework 6 (ef6)


 List<User> users = new List<User>();
        using (Entites context = new Entites())
            users = context.User.toList();
        string r = new JavaScriptSerializer.Serialize(personnel);

User有一个外键A。

自己的理解

ef使用懒加载,当json序列化user的时候会调用getA方法来获取此user实例的A属性值,但是默认触发了ef的懒加载机制,导致访问数据库,而此时ef上下文实例已经释放,无法获取数据库连接,导致抛出此异常。

entity-framework c#

阿良垃圾君 10 years, 1 month ago

 string r;
using (Entites context = new Entites())
{
    List<User> users = context.User.toList();
    r = new JavaScriptSerializer.Serialize(users);
}



 string r;
using (Entites context = new Entites())
{
    var users = from user in context.User
                select new
                {
                    id = user.id,
                    name = user.name,
                    personnel = (from p in user.personnel
                                 select new { 
                                     id = p.id,
                                     name = p.name,
                                 }),
                };
    r = new JavaScriptSerializer.Serialize(users);
}

loli控. answered 10 years, 1 month ago

Your Answer