using(DataContext db = new DataContext ())
{
var result = db.SomeTable.ToList();
return result;
}
问题是在我返回结果后,连接被关闭了,因为连接已经关闭了,当我尝试访问任何子元素时,它就会崩溃。这是因为默认情况下懒加载设置为True,它在使用子关系之前从不加载它们,而我在连接关闭后开始使用它们。那么最好的解决方法是什么?
我尝试关闭懒加载,但它没有加载任何子关系表。
using(DataContext db = new DataContext ())
{
var result = db.SomeTable.ToList();
return result;
}
您始终可以显式加载子集合:
var result = db.SomeTable.Include("SomeChildCollectionName")
.Include("AnotherChildCollectionName")
.ToList();
var result = db.SomeTable.Include("ChildEntitySet").ToList();
在返回之前,您还可以添加result.ChildEntitySet.Load()
调用。这种方法不太高效,因为它将导致两次对服务器的访问。使用.Include()方法将生成带有JOIN的SQL语句,只需要一次对服务器的访问。