我正在使用实体框架4创建一个webapp。据我所知,通过广泛的谷歌搜索,最好的做法是在使用objectcontext时创建并终止它,而不是让它活得太久。所以在我的数据层中,我正在做类似的事情:
使用(var context = new MyDAO()) { 我的代码 立即创建并杀死上下文。
我喜欢实体框架的一个原因是能够直接在代码中使用相关对象(例如Account.Employees)。问题是,当我尝试在我的表示层中执行此操作时,它会抛出异常,因为上下文不再可用,因此无法获取该帐户的员工。我已经尝试在我的数据层中的上下文中启用延迟加载,但它似乎不起作用。
所以我的问题是,如何在不同层级之间加载关系(懒惰)?
由于 托马斯
答案 0 :(得分:0)
在关闭上下文之前,您必须加载所需的所有内容。
这是EF的设计决定。应控制任何物体装载而不是间接发生。这通常会提供更具可扩展性的解决方案。
修改强>
感谢您的评论。
这些设置在上下文中。所以你仍然需要打开上下文。一种方法是在顶层打开上下文并将其作为参数发送。