2009-08-26 134 views
1

我在写一个使用实体框架的新应用程序。实体框架的最佳实践?

EF在哪里?我目前的想法是将它隔离在DataAccess程序集中,该程序集公开了许多存储库(实际上是包装EF)。

然后,我会创建自己的Domain对象并将它们传递给将它们映射到EntityFramework实体(我将其视为DAO)的存储库。

这种方法的问题是我需要做的映射量,即使对于较小的域模型也是如此。

我也很喜欢Repository.GetAll(Func<TDomainObj, bool> filter)方法来检索项的过滤数,但我需要的功能转换采取DAO来代替:

Func<**TDomainObj**, bool> filter --->

Func<**TEntityFrameworkObj**, bool> filter 

不知道我怎么能做到这一点?如果我只在储存库上允许Func<TEntityFrameworkObj, bool>,则调用者必须知道约System.Data.Objects

我开始觉得我应该只是几个应用程序,以EF和使用他们的System.Data.Objects作为我的模型....

期待您的意见/评论,

大卫

回答

0

我们将EF封装在服务层后面。服务层公开DTO对象。我们将EF对象映射到代码中的DTO对象。

在某些情况下,我们通过模板进行获取,这与您正在做的相似。我们在哪里发送对象,例如客户,并找回所有看起来像我们发送的客户。