在实体框架中分离DAL和域?

时间:2012-12-26 11:58:28

标签: .net entity-framework

我正在搞乱EF4.1。我想保持我的域名和DAL分开。我的域包含基本实体类和存储库的接口。 DAL包含这些存储库的实现。

我的问题是我必须编辑我的域以使用EF。例如,具有“地址”的“人”现在具有“AddressId”和“虚拟地址”。我现在还在我的域层中保留注释。我对此不太满意,因为这意味着我正在改变我的应用程序的核心以使用EF。我也介绍了不相关的数据,因为Address不需要在我的应用程序的上下文中有ID;只在数据库中。如果明天我写了一个新的DAL层来从Web服务或XML文件中获取我的对象怎么办?

有解决方法吗?我在考虑将EF实体保留在DAL层并将它们映射到存储库中的域类,但这不是一个巨大的性能损失吗?

1 个答案:

答案 0 :(得分:1)

我认为将您的EF实体放在DAL中并将您的存储库放在其他地方是没有意义的,更不用说将这些EF实体转换为域类会有不可避免的性能损失。

相反,您可能需要考虑使用EF Fluent API,如herehere所示。然后,您可以将DbContext类放入DAL中,将所有Fluent映射放在那里,并使您的域类保持干净和闪亮。