当EF尝试访问null属性时,将关闭上下文

时间:2011-01-26 21:32:41

标签: c# asp.net sql-server entity-framework

我有一个由我的实体框架模型定义的具有导航属性的对象,但每当导航属性为null时,实体框架似乎都试图从数据库中再次将其拉下来。现在这很好,我可以稍后解决这个问题,但是当它试图从数据库中获取导航属性时,我从模型中得到错误:

ObjectContext实例已被释放,不能再用于需要连接的操作。

这不是太好了,它正在吹这样的块。有什么我可以做的,以确保只在上下文仍然打开时尝试这个?

提前致谢!

2 个答案:

答案 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();