C# 自动映射:DTO和实体之间的映射
我正在使用ASP.NET核心WebAPI,我想为名为“Item”的对象执行CRUD。 我使用EF Core来处理SQL数据库,我有两个模型来表示我的对象C# 自动映射:DTO和实体之间的映射,c#,asp.net-core,asp.net-web-api,.net-core,automapper,C#,Asp.net Core,Asp.net Web Api,.net Core,Automapper,我正在使用ASP.NET核心WebAPI,我想为名为“Item”的对象执行CRUD。 我使用EF Core来处理SQL数据库,我有两个模型来表示我的对象 ItemDto-项目的数据传输对象 ItemEntity-数据库对象(表示表1:1中的一行) 我的httpget-one和httpget-many方法的工作方式是 获取ItemRepository实例 获取一个或多个ItemEntity 使用AutoMapper将其映射到ItemDto 这是在我的构造函数中初始化的,比如 m_itemDto
m_itemDtoMapper = new Mapper(new MapperConfiguration(cfg => cfg.CreateMap<ItemEntity, ItemDto>()));
m_itemDtoMapper=new映射器(new-MapperConfiguration(cfg=>cfg.CreateMap());
var itemDtos=m_itemDtoMapper.Map(items);
这工作得很好,AutoMapper非常强大。我现在的问题是:
在您的示例中,似乎每次初始化一个新的映射器实例时都会进行初始化。我建议您使用依赖项注入,并使用AutoMapper映射配置文件 你可以通过三个简单的步骤来完成,我认为它回答了你的两个问题: 第1步: 只需创建一个名为MappingProfile或类似的新类:
公共类映射配置文件:配置文件
{
公共映射配置文件()
{
CreateMap();//单向
CreateMap().ReverseMap();//反向
}
}
步骤2:在Startup.cs中注册自动映射器
//注册自动映射器
AddAutoMapper(Assembly.getExecutionGassembly());
第3步:在DI上使用映射器
公共用户服务(IMapper映射器){
_映射器=映射器;
}
//就这么说吧
_mapper.Map(用户);
希望它能帮助您:)在您的示例中,似乎每次初始化一个新的映射器实例时都会进行初始化。我建议您使用依赖项注入,并使用AutoMapper映射配置文件 你可以通过三个简单的步骤来完成,我认为它回答了你的两个问题: 第1步: 只需创建一个名为MappingProfile或类似的新类:
公共类映射配置文件:配置文件
{
公共映射配置文件()
{
CreateMap();//单向
CreateMap().ReverseMap();//反向
}
}
步骤2:在Startup.cs中注册自动映射器
//注册自动映射器
AddAutoMapper(Assembly.getExecutionGassembly());
第3步:在DI上使用映射器
公共用户服务(IMapper映射器){
_映射器=映射器;
}
//就这么说吧
_mapper.Map(用户);
希望它能帮助您:)不要使用m作为前缀,下划线对于C已经足够了:)不要使用m作为前缀,下划线对于C已经足够了。)
var itemDtos = m_itemDtoMapper.Map<IEnumerable<ItemEntity>, ICollection<ItemDto>>(items);