AutoMapperを使用して、インクルードアイテムを含むデータベースエンティティを別のドメインエンティティに投影しようとしています
IQueryable<DBTypeEntity> allItems = _dbContext.DBType.Include(e => e.A)
.Include(e => e.B)
.ThenInclude(e => e.C)
.Include(e => e.D)
.ThenInclude(ac => ac.E);
そして、プロジェクションを使用する
var result = allItems.ProjectTo<DBTypeDomain>(_typeMapper.ConfigurationProvider);
これが私のマッピングです:
CreateMap<DBTypeEntity, DBTypeDomain>()
.ForMember(e => e.A, opt => opt.Ignore())
.ForMember(e => e.B, opt => opt.MapFrom(e => e.B))
.ForMember(e => e.C, opt => opt.MapFrom(e => e.C))
.ForMember(e => e.E, opt => opt.MapFrom(e => e.E))
.ForMember(e => e.F, opt => opt.ResolveUsing<FResolver, ICollection<AssociatedFEntity>>(e => e.AssociatedFs))
.ForMember(e => e.G, opt => opt.MapFrom(e => e.G));
他のタイプは、特別なことは何もない、プロパティからプロパティへの直接のマッピングです。タイプマッパーに必要なすべてのプロファイルマッピングを設定しましたが、不可解な例外が発生します(これをクエリ可能な式に解決できません)。EF Core2.0とAutomapper6.2.2を使用しています
何か助けてください?
私はなんとか問題を修正することができました。(Automapper Docsのように)プロジェクションを使用する場合、インクルードは不要になりました。カスタムリゾルバーはセットからのselectステートメントに置き換えられ、カスタムリゾルバーはIQueryableのAutoMapperでのプロジェクションの使用を禁止していました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加