このようにネストされた子プロパティをマップしようとしています。ネストされたデスティネーションのあるAutomapperプロパティ
var mapperConfig = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Collection, CollectionDTO>()
.ForMember(dest => dest.Items.Select(x => x.AddedToCollectionDate),
opts => opts.MapFrom(src =>
src.CollectionItems.Select(ci => ci.AddedToCollectionDate)));
});
Collection.Items
List<Item>
です。各Item
にはAddedToCollectionDate
というプロパティがあり、ソースマッピングから移入する必要があります。
CollectionDTO
は、CollectionItem
と呼ばれるクロス結合テーブルに対してナビゲーションプロパティを持ちます。このプロパティは、AddedToCollectionDate
というプロパティを持ちます。
エラー:
Custom configuration for members is only supported for top-level individual members on a type.
どのように私はAutoMapperでこれを達成することができますか?
Clases(簡潔にするために他のプロパティを省略):
public partial class Collection
{
public virtual ICollection<CollectionItem> CollectionItems { get; set; }
}
public partial class CollectionItem
{
public System.DateTime AddedToCollectionDate { get; set; }
public virtual Collection Collection { get; set; }
public virtual Item Item { get; set; }
}
public class CollectionDTO
{
public List<ItemDTO> Items { get; set; }
public DateTime LastAccessedDate { get; set; }
}
public class Item
{
public DateTime LastAccessedDate { get; set; }
public virtual ICollection<CollectionItem> CollectionItems { get; set; }
}
質問: 'CollectionItem'と' Items'は同じ型ですか? – octavioccl
いいえ、 'Collection'テーブルは' Item'への 'CollectionItem'(相互参照テーブル)への参照を持っています。 'Collection'と' Item'には多対多の関係があります。私の 'Item'オブジェクトに移入された' CollectionItem'テーブルから 'AddedToCollectionDate'プロパティが必要です。 – duyn9uyen
しかし、あなたのDTOで同じ型のデータモデルを使用しているのでしょうか違うのですか?質問にクラスを追加してください。 – octavioccl