我有一个由我的实体框架模型定义的具有导航属性的对象,但每当导航属性为null时,实体框架似乎都试图从数据库中再次将其拉下来。现在这很好,我可以稍后解决这个问题,但是当它试图从数据库中获取导航属性时,我从模型中得到错误:
ObjectContext实例已被释放,不能再用于需要连接的操作。
这不是太好了,它正在吹这样的块。有什么我可以做的,以确保只在上下文仍然打开时尝试这个?
提前致谢!
答案 0 :(得分:2)
您启用了延迟加载,但是您已经处置了ObjectContext
。要么不要这么快处理,要么turn off lazy loading。
答案 1 :(得分:1)
EF框架还支持'eager loading'。这意味着相关实体将在同一查询中返回。当然,你必须提前知道你需要哪些相关实体,但这是我经常使用的一种技术。 在您的方案中可能值得一试。
以下是MSDN的示例代码:(http://msdn.microsoft.com/en-us/library/bb896272.aspx)
// Define a LINQ query with a path that returns
// orders and items for a contact.
var contacts = (from contact in context.Contacts
.Include("SalesOrderHeaders.SalesOrderDetails")
select contact).FirstOrDefault();