我有一个数据层,用于保存我的EF6 DbFirst edmx,存储库和AutoMappings。
我的数据层中每个自动生成的实体都有一个带有Poco的Model层。除了一些名称更改外,这些属性几乎完全匹配。
AutoMapper仅安装到我的DataLayer,这是我在配置文件中设置所有映射的地方。此时,我有一个从每个DataLayer实体到每个ModelLayer实体的映射,以及每个ModelLayer实体到每个DataLayer实体的映射。在映射中指定了任何名称更改。
因为它是在我的存储库保存方法中以这种方式设置的,所以该函数从ModelLayer接收一个对象,但随后被映射到DataLayer对象,因此我可以将它发送到DbContext。在我的存储库中提取信息时,我使用DbContext检索,然后使用AutoMapper函数映射到Model,这样函数就可以作为Model.entity返回。
我的商务图层和网络应用仅使用模型实体。如果有任何问题,请告诉我。
另一件事是在我的控制器中的GET和POST操作期间从ModelLayer映射到ViewModel,反之亦然。在这里映射两种方式是否正常?我是否需要在此时将AutoMapper安装到我的网络应用程序中?
答案 0 :(得分:15)
当我想摆脱无聊的左侧右侧代码时,我使用AutoMapper。如果逻辑对于复制数据并不完全明显,我将恢复为手动映射。
这些天这意味着我在所有GET上使用AutoMapper的LINQ投影,并且在POST上使用很少。