2016-10-22 1 views
0

私はシステム内の他のエンティティと多くの関係を持つ複雑なドメインモデルを持っています。AutoMapper - モデルを表示するためにドメインモデルを平坦化します。 1つは多くの関係にあります

このモデルを編集する目的で、私は物事を単純化するビューモデルを設定したいと考えています。モデル全体を1つの画面で表現するのではなく、各部分の編集画面を使ってモデルをより小さな論理チャンクに分割したいと考えています。

public partial class CbItemsContent 
{ 

    public CbItemsContent() 
    { 
     this.cbItemsContentRegulators = new HashSet<cbItemsContentRegulator>(); 
    } 

    public int ItemContentId { get; set; } 
    public int ItemID { get; set; } 
    ...... 

    public virtual CbItem CbItem { get; set; } 
    public virtual ICollection<cbItemsContentRegulator> cbItemsContentRegulators { get; set; } 
} 

cbItemsContentRegulatorは(モデルは上記に示す)

CbItemsContentによって所有されているエンティティの別のセットがある:私は1つを持っているドメインモデルで

が、それはこのように表現され、多くの関係にあります

public class ItemContentRegulatorsViewModel 
{ 
    public int ItemContentId { get; set; } 

    public int[] RegulatorIds { get; set; } 
} 
:私は簡素化のViewModelと私のモデルにcbItemsContentRegulatorsのコレクションを交換したいと思い

はこのようItemContentRegulatorsViewModelと呼ばれます

これは、ItemContent親IDとint配列の関係を減らす場合です。レギュレータID

は、私が可能にしようとしているものですか?私はあなたがEntity Frameworkのを使用している、あなたは

んが、あなたが定義することはできません
public class ItemContentRegulatorsViewModel 
{ 
    public int ItemContentId { get; set; } 
    public IList<int> RegulatorIds { get; set; } // IList 
} 

にビューモデルを変更する必要があると仮定すると、[]のIds

答えて

0

のintにCbItemsContentRegulatorsの私のコレクションの地図にはどうすればよい

マッピング:

var profile = Mapper.CreateProfile("SomeName"); 
profile.CreateMap<CbItemsContent,ItemContentRegulatorsViewModel>() 
     .ForMember(dest => dest.RegulatorIds, 
      m => m.MapFrom(src => src.cbItemsContentRegulators.Select(c => c.RegulatorId))); 

今、あなたのようなクエリでそれを使用することができます。

context.CbItemsContents.ProjectTo<ItemContentRegulatorsViewModel>() 

RegulatorIdsを配列として使用すると、ToArrayが認識されない例外がスローされます。

関連する問題