我有一个 N 层应用程序,如下所示
我的应用程序模型- 包含 edmx 和数据模型
MyApp.DataAccess- 带有 EF 的存储库
我的应用程序域- 领域/商业模式
我的应用程序服务- 服务(类库)
我的应用程序API- ASP.NET Web API
我使用 Unity 作为我的 IoC 容器自动映射器用于 OO 映射。
我的数据访问层参考模型层,其中包含我的所有数据对象。
我不想在 Api 层中引用我的模型项目。因此从服务层返回DomainObjects(业务模型)并映射到API层中的DTO(DTO位于API层中)。
我在API层将domainModel配置为DTO映射,如下所示
public static class MapperConfig
{
public static void Configure() {
Mapper.Initialize(
config => {
config.CreateMap<StateModel, StateDto>();
config.CreateMap<StateDto, StateModel>();
//can't do this as I do not have reference for State which is in MyApp.Model
//config.CreateMap<State, StateModel>();
//config.CreateMap<StateModel, State>();
});
}
}
现在我的问题是如何/在哪里配置我的自动映射器映射以将我的实体模型转换为域模型?
在我的 API 层中,我没有引用我的模型项目。我相信我应该在服务层执行此操作,但不知道如何执行此操作。请帮助如何配置此映射。
Note:在问这里之前我用谷歌搜索了所有的眼睛
在引用的 dll 中放置 AutoMapper 地图注册的位置 https://stackoverflow.com/questions/30136415/where-to-place-automapper-map-registration-in-referenced-dll说使用静态构造函数,我认为这不是添加到所有模型中的好选择(我有 100 个模型),另一个答案说使用 PreApplicationStartMethod,为此我必须将对 System.web.dll 的引用添加到我的服务中,即不正确。
https://groups.google.com/forum/#!topic/automapper-users/TNgj9VHGjwg https://groups.google.com/forum/#!topic/automapper-users/TNgj9VHGjwg也没有正确回答我的问题。