マイデータベース:あなたが見ることができるように、私は私のProductVmにしたFieldValueのエンティティクラスを使用AutoMapper + ProjectTo - ナビゲーションプロパティを持つエンティティクラスへのマッピング
public class ProductVm
{
public IEnumerable<FieldValue> FieldValues { get; set; }
// other view models
}
this.CreateMap<Product, ProductVm>()
// other properties mappings
;
:
public class Product
{
public int Id { get; set;}
public ICollection<FieldValue> FieldValues { get; set;}
// other properties
}
public class FieldValue
{
public int Id { get; set; }
public int FieldId { get; set; }
public int ProductId { get; set; }
public Field Field { get; set; }
public Product Product { get; set;}
}
public class Field
{
public int Id { get; set;}
public string Name { get; set;}
}
マイビューモデルとマッピングビューモデル。
私のデータベースクエリは非常に簡単です:私は、データベースとプロジェクトの製品を照会すると
var productViewModel = context.Products.ProjectTo<ProductVm>().First(p => p.Id == productId);
は - > ProductVm私はフィールドのセットなしたFieldValueコレクションを見つけます。
ビューモデルにマップする必要がある他のプロパティがあるので、私はProjectToマッピングを使用する必要があります。 FieldValueだけがそれにとどまる必要があります。
AutoMapperに返されたデータにこのフィールドを含める方法を教えてください。 1つの制限 - FieldValueクラスオブジェクトを返す必要があります。返されたクラスを他のVMに変更することはできません。
データベースクエリを投稿すると便利です –
私はクエリを追加しました - それは本当に簡単です。手掛かりは、AutoMapper + ProjectToを追加のナビゲーションプロパティを含めて接続する方法です。 –