使用 AutoMapper Map 函数映射对象时,将源对象的 属性 保留到目标对象 属性
Keep property of source object to destination property when mapping objects using AutoMapper Map function
我想将当前对象(this
一个FinancialBase
实例)的大部分属性映射到另一个对象('destination'对象,schedule
一个实例Schedule
class)。但是,我需要保留一小部分目标属性。
我在 'hack' 中使用它,我在其中明确捕获值,然后在 AfterMap
函数中使用这些值。请参阅示例代码。
var id = schedule.Id;
var parentId = schedule.ParentId;
var scheduleNo = schedule.ScheduleNo;
var schName = schedule.SchName;
var config = new MapperConfiguration(
cfg => cfg.CreateMap<FinancialBase, Schedule>()
.ForMember(d => d.Id, opt => opt.Ignore())
.ForMember(d => d.ParentId, opt => opt.Ignore())
.ForMember(d => d.ScheduleNo, opt => opt.Ignore())
.ForMember(d => d.SchName, opt => opt.Ignore())
.AfterMap((s, d) => d.Id = id)
.AfterMap((s, d) => d.ParentId = parentId)
.AfterMap((s, d) => d.ScheduleNo = scheduleNo)
.AfterMap((s, d) => d.SchName = schName));
var mapper = config.CreateMapper();
schedule = mapper.Map<Schedule>(this);
我不想使用示例的前四行,而是使用常规的 AutoMapper lambda 表达式将它们包含在内。可能吗?
我只使用到现有对象的映射:
var existingSchedule = new Schedule()
{
Id = 12,
ParentId = 34,
ScheduleNo = 56,
SchName = "Foo",
};
var schedule = mapper.Map(this, existingSchedule);
并在配置中保留 Ignore()
行,但删除带有 AfterMap()
的行,因为它们不再需要:
var config = new MapperConfiguration(
cfg => cfg.CreateMap<FinancialBase, Schedule>()
.ForMember(d => d.Id, opt => opt.Ignore())
.ForMember(d => d.ParentId, opt => opt.Ignore())
.ForMember(d => d.ScheduleNo, opt => opt.Ignore())
.ForMember(d => d.SchName, opt => opt.Ignore()));
我想将当前对象(this
一个FinancialBase
实例)的大部分属性映射到另一个对象('destination'对象,schedule
一个实例Schedule
class)。但是,我需要保留一小部分目标属性。
我在 'hack' 中使用它,我在其中明确捕获值,然后在 AfterMap
函数中使用这些值。请参阅示例代码。
var id = schedule.Id;
var parentId = schedule.ParentId;
var scheduleNo = schedule.ScheduleNo;
var schName = schedule.SchName;
var config = new MapperConfiguration(
cfg => cfg.CreateMap<FinancialBase, Schedule>()
.ForMember(d => d.Id, opt => opt.Ignore())
.ForMember(d => d.ParentId, opt => opt.Ignore())
.ForMember(d => d.ScheduleNo, opt => opt.Ignore())
.ForMember(d => d.SchName, opt => opt.Ignore())
.AfterMap((s, d) => d.Id = id)
.AfterMap((s, d) => d.ParentId = parentId)
.AfterMap((s, d) => d.ScheduleNo = scheduleNo)
.AfterMap((s, d) => d.SchName = schName));
var mapper = config.CreateMapper();
schedule = mapper.Map<Schedule>(this);
我不想使用示例的前四行,而是使用常规的 AutoMapper lambda 表达式将它们包含在内。可能吗?
我只使用到现有对象的映射:
var existingSchedule = new Schedule()
{
Id = 12,
ParentId = 34,
ScheduleNo = 56,
SchName = "Foo",
};
var schedule = mapper.Map(this, existingSchedule);
并在配置中保留 Ignore()
行,但删除带有 AfterMap()
的行,因为它们不再需要:
var config = new MapperConfiguration(
cfg => cfg.CreateMap<FinancialBase, Schedule>()
.ForMember(d => d.Id, opt => opt.Ignore())
.ForMember(d => d.ParentId, opt => opt.Ignore())
.ForMember(d => d.ScheduleNo, opt => opt.Ignore())
.ForMember(d => d.SchName, opt => opt.Ignore()));