【发布时间】:2015-02-18 01:05:08
【问题描述】:
我有一个数据层,其中包含我的 EF6 DbFirst edmx、存储库和 AutoMappings。
对于我的数据层中的每个自动生成的实体,我还有一个模型层和一个 Poco。除了一些名称更改之外,这些属性几乎完全匹配。
AutoMapper 仅安装到我的 DataLayer,这是我在配置文件中设置所有映射的地方。此时,我有一个从每个 DataLayer 实体到每个 ModelLayer 实体以及每个 ModelLayer 实体到每个 DataLayer 实体的映射。任何名称更改都在映射中指定。
由于它是在我的存储库保存方法中以这种方式设置的,因此该函数从 ModelLayer 中获取一个对象,然后映射到一个 DataLayer 对象,以便我可以将它发送到 DbContext。在我的存储库中提取信息时,我使用 DbContext 进行检索,然后使用 AutoMapper 函数映射到 Model,以便该函数可以作为 Model.entity 返回。
我的业务层和 Web 应用仅使用模型实体。如果这似乎有什么问题,请告诉我。
另一件事是在我的控制器中的 GET 和 POST 操作期间从 ModelLayer 映射到 ViewModel,反之亦然。在这里同时映射两种方式是否正常?此时我需要将 AutoMapper 安装到我的 Web 应用吗?
【问题讨论】:
-
“什么时候应该使用 AutoMapper,什么时候不”
-
@MauricioScheffer:我不同意,从内部模型映射到视图模型(向外)或从验证模型映射到内部模型(向内)是完全可以接受的。
-
所以我认为没有对错。如果您需要从一个相似对象转到另一个相似对象,并且不想每次使用 AutoMapper 时都手动设置属性。
-
查看tonymorris.github.io/blog/posts/…,了解正确使用类型的一些好处。 AutoMapper 使您无法推理您的代码。
-
还推荐“Propositions as types”wadler.blogspot.co.uk/2014/06/…(无需了解所有类型理论)。没有逻辑的类型是……嗯,不合逻辑的。最好避免这种情况。
标签: c# asp.net-mvc asp.net-mvc-5 viewmodel automapper