2016-08-31 9 views
0

私はかなり複雑な状況があります。 私は順序があります。ShipmentsTableVMはとても似ている、二重ネストされたIEnumerableを自動化

public partial class BIGVIEWVM 
    { 
     public string orderNum { get; set;} 
     public OrderDetailsVM Order { get; set; } 
     public ShipmentsTableVM Shipments { get; set; } 
    } 

サブビュー:

public partial class ShipmentsTableVM 
    { 
      public string somethingelse {get;set;} 
      public IEnumerable<Shipment_Table_Row_VM> Shipments{get;set;} 
    } 

これは、これよりも実際にはもっと複雑だが、この私は、ビューBIGVIEWを持って

public partial class Order 
    { 
     public string orderNum { get; set;} 
     public ICollection<Shipment> Shipments { get; set; } 
     ... 
    } 

を最も簡単な形で問題になっています。

私は、Shipmentsのロットを持つOrderを持っています。 OrderからBIGVIEWにAutoMapperを使用してProjectToコールを発信したいと思います。 Orderの全体は問題なくにマップされますが、私がどのように行うかわからないのは、ICollectionを自分のShipmentsTableVMに渡し、次にそれをIEnumerableにマップすることです。

  cfg.CreateMap<Order, BIGVIEW>() 
       .ForMember(d => d.order, opt => opt.MapFrom(s => s)) 
       ...? 

は、私は私のShipmentsTableVMICollection<Shipments>からのマッピングの世話をすると考えていた:

  cfg.CreateMap<IEnumerable<Shipment>, ShipmentsTableVM>() 
       .ForMember(d => d.Shipments, opt => opt.MapFrom(s => s)) 
       ; 

しかし、これは動作しません - 私は、LINQのは物事をマップすることができないというエラーを取得していますIEnumerableではありませんが、IEnumerableを使用していますので、わかりません。私は他のさまざまな構成も試みましたが、どこも速くはありません。

コントローラで手動で投影したくないので、私はAutomapperのソリューションを探しています。

ありがとうございました

答えて

0

サブモデルに適切なモデルを渡す必要があります。試してみてください。

Order.Shipments 

または

Model.Shipments 
+0

私はその後、私はICollectionををマッピングする必要があるが、 'cfg.CreateMap 、ShipmentsTableVM>()' – Worthy7

+0

試し 'CFGの問題を持っているようだ、これを試してみました。 'cfg.CreateMap'の代わりに' Map'を実行します – Hadee

+0

cfg.Mapは存在しません – Worthy7

0

これを達成するには、いくつかの方法がありますが、ここではそれらの一つです。

cfg.CreateMap<Shipments, Shipment_Table_Row_VM>(); 

cfg.CreateMap<ICollection<Shipments>, ShipmentsTableVM>() 
.ConstructUsing(obj => new ShipmentsTableVM()) 
.ForMember(d => d.Shipments, opt => opt.MapFrom(s => s)); 

cfg.CreateMap<Order, BIGVIEWVM>(); 
+0

'/ 'アプリケーションのサーバーエラー。 'System.Collections.Generic.ICollection'1 [[MYAPP.Models.SHIPMENT、MYAPP、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null]]'タイプの要素を比較できません。プリミティブ型、列挙型、およびエンティティ型のみがサポートされています。 – Worthy7

+0

Mapper.Mapを使用しているときではなく、ProjectToを実行しているときだけエラーが発生しています。 – Worthy7

関連する問題