我有一堆简单形式的三层web应用程序。一个列出记录,一个编辑单个记录等。这些作品。我应该在三层应用程序中实例化实体框架的ObjectContext
我有一个DataLayer我的EDMX是。 我有一个应用程序层,我的POCO是。 我有一个BusinessLayer与我所有的控制器类等(不是MVC!) 我有一个用户界面层,我的网络用户界面是。
EDMX有很多很多导航属性的表。 当然,当我在我的一个控制器中获取数据时, GetCustomerById(int id),我创建了Object上下文,并在完成时关闭它。
但是,当我尝试访问UI层中的导航属性时,ObjectContext
超出了范围。
我应该在网页层做(using MyContext = new MyContext()) {... }
??这看起来不正确。 我应该从BizLayer的实体数据创建另一组POCO吗? 当我想保存输入网页表单的数据时会发生什么?我会打电话给一个BizLayer控制器,例如SaveCustomer()?
我的问题是,如果我想要能够正确访问实体的导航属性,您如何设计Web UI层?
注意: EDMX设置为LazyLoading。
OMG这个问题一次又一次地回来...... :)看到我的asnwer在这里,这不是最终的真相或唯一的方式去,但我得到了很多共识迄今... http://stackoverflow.com/a/7474357/559144 – 2012-02-16 09:07:34
谢谢。但这不是MVC。对我来说,问题是如果我不想在Web UI中依赖EF,那么我该如何处理POCO以及如何正确访问/保存/编辑它们。 – John 2012-02-16 09:23:02
这是所有在我的答案中解释,它也适用于Web窗体或Windows窗体或WPF,分层如你分离UI从EF,NHibernate等任何依赖... – 2012-02-16 09:26:25