一直忙于创建一个新的应用程序,基本上我有我的数据访问、服务层和表示层......一切都很好,但我使用的是 EF 返回的实体类。这里的问题是我将这些传递到表示层,所以我需要将 Entity Framework 引用/数据访问添加到表示层 - 不好:
所以我的想法如下,并正在寻求一些帮助和确认我正在沿着正确的路线前进...
在服务层创建一组类,如客户、订单等,因为表示层引用了服务层。
当在数据访问中返回客户实体时,我会将实体类(即客户)返回给服务,并且我会在此处进行映射 - 不太确定我是否喜欢这样?
我用于映射的这些“标准类”的最佳位置在哪里,如果我将它们放在服务层中并进行数据访问映射,那么这将创建一个循环引用,如 Dataaccess > service和 service > dataaccess.. - 它应该只是一种方式,即 service > dataaccess
我正在考虑使用 Automapper ( http://www.codeplex.com/AutoMapper ) 来解决这个问题,我在正确的路线上吗???任何想法或例子真的很感激..
正如我所说,唯一的事情是当我从数据访问返回到服务层(使用 Iqueryable)时,我需要将它们从实体类中映射出来并使用标准集合类..
我认为这是我感到困惑的地方,我确实觉得使用实体类并不好,因为这意味着我需要在我的表示层中引用 Entity Framework /数据访问才能访问实体类。 .
最佳答案
您遇到了 EF v1 的一个弱点。现在,是的,使用 AutoMapper 肯定可以让您将 EF 实体转换为“直接”业务实体,并在更高层中使用它们。
另外,.NET 4.0/Visual Studio 2010 的 EF v4 应该会在许多问题领域带来很大的缓解 - 支持您自己的直接 POCO(普通旧 CLR 对象),以及更多.查看EF Design Blog .该团队最近发布了许多关于 EF v4 的非常有趣、非常有前途的帖子。好期待!
马克
关于c# - 使用存储库模式与 Entity Framework 一起使用的自动映射器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887777/