映射到新实体或现有实体时的自定义映射
Custom mapping when mapping to new or existing entities
我已经在我的 ASP.NET 核心应用程序中成功使用了 AutoMapper
。我正在创建映射配置并且主要使用 ForMember
、BeforeMap
或 AfterMap
来自定义某些映射。
现在我有一个特定的场景,我在其中导入数据并更新现有实体(如果存在)或创建新实体(如果不存在)。我也想使用 AutoMapper
来映射实体。
例如(保持简单)我有一个导入 class:
public class ImportModel
{
public int Number { get; set; }
public string Description { get; set; }
}
而实际模型class:
public class ActualModel
{
public int Id { get; set; }
public int Number { get; set; }
public string Description { get; set; }
}
当我解析和遍历导入行时,我目前所做的是:
var model = modelService.Get(x => x.Number == item.Number);
if (model != null)
{
model.Description = item.Description ;
}
else
{
model = new ActualModel() {
Number = item.Number,
Description = item.Description
};
}
现在,基本上我想将上面的内容更改为(希望)使用映射配置到 add/update 模型的单行。
是否有可能实现这一目标(也许使用额外的 AutoMapper
功能客户解析器、构造器等)?
过载
destination = mapper.Map<TSource, TDestination>(source, destination);
成功了。
我已经在我的 ASP.NET 核心应用程序中成功使用了 AutoMapper
。我正在创建映射配置并且主要使用 ForMember
、BeforeMap
或 AfterMap
来自定义某些映射。
现在我有一个特定的场景,我在其中导入数据并更新现有实体(如果存在)或创建新实体(如果不存在)。我也想使用 AutoMapper
来映射实体。
例如(保持简单)我有一个导入 class:
public class ImportModel
{
public int Number { get; set; }
public string Description { get; set; }
}
而实际模型class:
public class ActualModel
{
public int Id { get; set; }
public int Number { get; set; }
public string Description { get; set; }
}
当我解析和遍历导入行时,我目前所做的是:
var model = modelService.Get(x => x.Number == item.Number);
if (model != null)
{
model.Description = item.Description ;
}
else
{
model = new ActualModel() {
Number = item.Number,
Description = item.Description
};
}
现在,基本上我想将上面的内容更改为(希望)使用映射配置到 add/update 模型的单行。
是否有可能实现这一目标(也许使用额外的 AutoMapper
功能客户解析器、构造器等)?
过载
destination = mapper.Map<TSource, TDestination>(source, destination);
成功了。