关于网友提出的“此 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