using(DataContext db = new DataContext ())
{
var result = db.SomeTable.ToList();
return result;
}
问题是在我返回结果后,连接被关闭,因为它已关闭,当我试图访问任何子元素时它会崩溃。发生这种情况是因为延迟加载设置为True(默认值)它永远不会在使用之前加载子关系,并且在关闭连接后我开始使用它们。那么解决这个问题的最佳方法是怎样的呢?
我试图关闭延迟加载但是它没有加载任何子关系表。
答案 0 :(得分:14)
您始终可以显式加载子集:
var result = db.SomeTable.Include("SomeChildCollectionName")
.Include("AnotherChildCollectionName")
.ToList();
答案 1 :(得分:3)
您可以使用.include()方法。
var result = db.SomeTable.Include("ChildEntitySet").ToList();
您还可以在返回前添加result.ChildEntitySet.Load()
来电。这效率较低,因为它会导致两次访问服务器。使用.Include()方法将生成一个带有JOIN的SQL语句,只允许一次访问服务器。