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

yanwushu
  • 1.2k

环境 .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上下文实例已经释放,无法获取数据库连接,导致抛出此异常。

回复
阅读 7k
1 个回答
✓ 已被采纳
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);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏