このコードを使用して、DTO のリストを対応する EF にマップしています。フェッチは言うまでもなく、ループを排除したいと思います。後者Employee
は、辞書内のすべてのオブジェクトをキャッシュすることで実行できますが、ループで立ち往生しています。
var gridEmps = (List<EmployeeDescriptor>) employeeDescriptorBindingSource.DataSource;
Mapper.CreateMap<EmployeeDescriptor, Employee>();
foreach (var newEmp in gridEmps)
{
var oldEmp = context.Employees.Single(emp => emp.Id == newEmp.Id);
Mapper.Map(newEmp,oldEmp);
}
上記で使用したように、AutoMapper は私の DTO から既にインスタンス化されたエンティティ オブジェクトにマップしますが、2 つのリストを使用してこれを試みると、次のようになります。
var gridEmps = (List<EmployeeDescriptor>) employeeDescriptorBindingSource.DataSource;
var dbEmps = context.Employees.ToList();
Mapper.CreateMap<EmployeeDescriptor, Employee>();
Mapper.Map(gridEmps, dbEmps);
AutoMapper は、キー プロパティに基づいて、あるリストから別のリストに正しいオブジェクトをリンクする方法をどのように認識しますか? キー プロパティもマップされていることは知っていますが、これは EF の変更追跡を混乱させるのでしょうか?
AutoMapper にソース オブジェクトと宛先オブジェクトをキー プロパティでリンクさせるにはどうすればよいですか?