此 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上下文实例已经释放,无法获取数据库连接,导致抛出此异常。
阿良垃圾君
10 years ago
Answers
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 ago