MVC3应用中的解耦实体框架

Gra*_*ant 5 c# entity-framework dependency-injection decoupling asp.net-mvc-3

关于使用实体框架作为数据访问层在MVC3 Web应用程序中解耦我的域层和数据层,我有几个问题.

现在我的控制器完全依赖于EF类,在花了大部分时间阅读依赖注入后,我试图将它们分离.

我的第一个问题是 - 我是否需要将所有EF类有效地复制到我的业务层中?我显然不能再使用EF类了,所以在我看来,我需要创建一个正在使用的每个表类的副本来使其工作.这是正确的吗?例如,如果我的DB中有50个表示50个表的EF类,我是否需要在业务层中创建50个新类? - >然后无限期地维护它们?这听起来像是很多工作.

其次,我是否正确假设依赖性被翻转而不是业务层依赖于数据层,数据层最终变得依赖于业务层?

ken*_*n2k 3

对于实体的复制...这取决于 EF 的版本和您使用的方法。

如果您使用POCO 实体,那么您的模型与 EF 无关,因为您的实体不继承自 EF EntityObject。所以你不必复制你的实体。在运行时,借助代理实体,EF 将生成从 POCO 继承的动态类型,并添加所有 EF 管道以进行延迟加载等。

无论如何,请注意,由于 ASP.Net MVC,您最终总是会将一些模型类复制到所谓的视图模型中,以便您可以强类型化您的视图。

其次,我是否正确地假设依赖关系发生翻转,而不是业务层依赖于数据层,而是数据层最终变得依赖于业务层?

不,数据层不应该知道业务层。