c# - 使用存储库模式与 Entity Framework 一起使用的自动映射器?

标签 c# entity-framework repository-pattern

一直忙于创建一个新的应用程序,基本上我有我的数据访问、服务层和表示层......一切都很好,但我使用的是 EF 返回的实体类。这里的问题是我将这些传递到表示层,所以我需要将 Entity Framework 引用/数据访问添加到表示层 - 不好:

所以我的想法如下,并正在寻求一些帮助和确认我正在沿着正确的路线前进...

  1. 在服务层创建一组类,如客户、订单等,因为表示层引用了服务层。

  2. 当在数据访问中返回客户实体时,我会将实体类(即客户)返回给服务,并且我会在此处进行映射 - 不太确定我是否喜欢这样?

  3. 我用于映射的这些“标准类”的最佳位置在哪里,如果我将它们放在服务层中并进行数据访问映射,那么这将创建一个循环引用,如 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/

相关文章:

c# - 创建、批准、编辑、批准网站内容模式

c# - 在 C# 中尝试从 ConcurrentDictionary 中删除键值对

c# - Android c# 按钮重叠

c# - 领域驱动设计和聚合

c# - 将 UnitOfWork 与存储库模式结合使用

c# - 异步记录对站点的每个请求的请求记录器

c# - 如何在C#中读取xml文件?

c# - AppSettings 清除 app.config 中的 Xml 元素

.net - 如何不为种子实体设置 DatabaseGenerateOption.Identity

entity-framework - EF 4.3 迁移 - 如何生成降级脚本?