私のCompany
オブジェクトはEmployees
のリストを持ち、私のPayroll
オブジェクトはEmployees
のリストを持っています。Automapperは1つのオブジェクトの2つのインスタンスを作成します
私のDTOでは、company
とpayroll
の両方が同じemployee
のインスタンスを共有しているとしましょう(従業員オブジェクトは1つだけです)。
company.Employee != payRoll.Employee
彼らは性質は同じだが、ない同じインスタンス:ので、その従業員オブジェクトの
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);
2つの別々のインスタンスが作成されます。
私はAutoMapperでそれらをマップします。
これはDAL内の同じオブジェクトであり(ビジネスレイヤー内の同じオブジェクトである必要があるため)、非常に扱いにくいものになります。
AutoMapperが同じオブジェクトの2つのインスタンスを作成しないようにすることはできますか?
これは暗闇の中のちょっとしたショットです: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。従業員は地図をスキップしますか? –