我的Company
对象有一个列表Employees
,而我的Payroll
对象有一个列表Employees
。Automapper创建一个对象的两个实例
在我的DTO中,我们假设company
和payroll
都共享同一个employee
(只有一个员工对象)实例。
当我与AutoMapper将它们映射:该雇员对象的
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<DTOBusiness, Business>();
cfg.CreateMap<DTOCompany, Company>();
cfg.CreateMap<DTOPayRoll, PayRoll>();
cfg.CreateMap<DTOEmployee, Employee>();
});
var business = config.CreateMapper().Map<Business>(dtoBusiness);
两个单独的实例被创建,因此:
company.Employee != payRoll.Employee
他们在性能相同,但不是同一个实例。
这使事情变得非常尴尬,因为它们是DAL中的同一个对象(并且需要与业务层中的对象相同)。
我可以阻止AutoMapper创建同一个对象的两个实例吗?
这只是一个黑暗中的镜头:你是否考虑过使用AutoMapper.Collection(https://github.com/AutoMapper/AutoMapper.Collection)或者其他一些扩展(我假设你使用ORM )? – JZimmerman
好喊,但我实际上也尝试过(对ID使用EqualityComparison),但是当一个对象有多个父母时,它似乎仍然为每个父母创建不同的实例。 – FBryant87
刚刚发现这个基于条件的映射:[link](https://stackoverflow.com/questions/2451189/automapper-ignore-on-condition-of)..也许如果'company.Employee == payRoll。员工“,然后跳过地图? –