我创建了一个类库来放置我的存储库,域模型和我的DTO.当用户调用ClienteRepository.GetById(1)作为例子时,它应该获取Client域模型并转换为ClientDTO以返回此示例:
public class ClientRepository{
public ClientDTO GetById(int id){
var clientDto = Mapper.Map<Client, ClientDTO>(_db.Client.Find(id));
return clientDto;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是Mapper.Map不起作用,因为我没有创建map(Mapper.CreateMap<Client, ClientDTO>()).
我的问题:如果我没有global.asax来创建它,我怎么能在类库中做到这一点?
您不需要Global.asax用于Automapper.这是为Web项目执行映射init的更好方法.
只需将初始化代码放在静态构造函数中即可
static MyStaticCtor()
{
//samples
//Mapper.CreateMap<AccountViewModel, Account>();
//Mapper.CreateMap<AccountSettingViewModel, AccountSetting>()
Mapper.AssertConfigurationIsValid();
}
Run Code Online (Sandbox Code Playgroud)
或者甚至,您可以在存储库的构造函数中执行此操作.
我使用https://github.com/davidebbo/WebActivator解决了我的问题.只需创建一个新类并输入以下代码:
[assembly: WebActivator.PostApplicationStartMethod(typeof (MapsInit), "Activate")]
namespace Database
{
public static class MapsInit
{
public static void Activate()
{
Mapper.CreateMap<ClienteDto, Cliente>();
Mapper.CreateMap<Cliente, ClienteDto>();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6328 次 |
| 最近记录: |