您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> 此 ObjectContext 实例已释放,不可再用于需要连接的操作?

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

来源:网络整理     时间:2016/5/18 22:39:51     关键词:context,object

关于网友提出的“此 ObjectContext 实例已释放,不可再用于需要连接的操作?”问题疑问,本网通过在网上对“此 ObjectContext 实例已释放,不可再用于需要连接的操作?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

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

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

        List users = new List();
        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上下文实例已经释放,无法获取数据库连接,导致抛出此异常。


解决方案1:

string r;
using (Entites context = new Entites())
{
    List 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);
}

以上介绍了“此 ObjectContext 实例已释放,不可再用于需要连接的操作?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1168255.html

相关图片

相关文章