「ディープ ロード」されたエンティティ フレームワーク オブジェクトの自動マッピングに関して質問があります。コレクションである Tasks というメンバーを持つ Project オブジェクトがあります。そして、各タスクには、コレクションである Works というメンバーがあります。プロジェクトが深く読み込まれると、これらのタスクとその Works メンバーがすべて読み込まれます。次のようになります。
-- Project
-- Task 1
-- Work 1
-- Work 2
-- Task 2
-- Work 3
次のようなリゾルバーを使用して 1 レベルの深さをマップする方法を見つけました。
CreateMap<DataAccess.Task, Entities.Task>()
.ForMember(obj => obj.Description, obj => obj.MapFrom(src => src.Description))
.ForMember(obj => obj.Estimate, obj => obj.MapFrom(src => src.Estimate))
.ForMember(obj => obj.Id, obj => obj.MapFrom(src => src.ID))
.ForMember(obj => obj.ProjectId, obj => obj.MapFrom(src => src.Project))
.ForMember(obj => obj.TaskName, obj => obj.MapFrom(src => src.TaskName))
.ForMember(obj => obj.Visible, obj => obj.MapFrom(src => src.Visible))
.ForMember(obj => obj.WorkItems, obj => obj.ResolveUsing<WorkItemsResolver>().FromMember(src => src.Works));
public class WorkItemsResolver : ValueResolver<EntityCollection<DataAccess.Work>, ICollection<Entities.Work>>
{
#region Overrides of ValueResolver<List<Task>,List<Task>>
protected override ICollection<Entities.Work> ResolveCore(EntityCollection<DataAccess.Work> source)
{
Mapper.EntitiesMapper entitiesMapper = new EntitiesMapper();
return source.Select(wk => entitiesMapper.Map<Entities.Work>(wk)).ToList();
}
#endregion
}
ただし、最上位のオブジェクト (プロジェクト) をマップし、その子リスト (およびその子リスト) も付随するビジネス オブジェクトにマップする方法など、2 レベル深くする方法がわかりません。
これが Automapper で可能かどうかは誰にもわかりませんか?
ありがとう