2012-02-19 14 views
0
上記の

は、ドメインからdtoモデルへのデータ操作に使用するコードです。これはwcfシリアル化に使用します。私の質問は、MotherDTOに子供のコレクションを持つオブジェクトの母を渡す方法です。現在のコード状況では、コレクションの子なしのデータのみを渡します。セッションを追加したり、セッションを追加する必要がありますか?MotherDTO dto = new MotherDTO(data、session);そのセッションを使用してdtoの子どもの収集を習得することです。もしそうなら、どうですか?助けてください。ドメインからコレクションへのコレクションオブジェクト渡しnhibernateを持つDTO

よろしく、

public MotherDTO GetMotherData() 
    { 
     using (ISession session = instance.OpenSession()) 
     { 
      using (ITransaction tx = session.BeginTransaction()) 
      { 
       Mother data = session.Query<Mother>() 
        .Fetch(x => x.Childrens) 
        .FirstOrDefault(); 
       tx.Commit(); 

       MotherDTO dto = new MotherDTO(data); 
       return dto; 
      } 
     } 
    } 

MotherDTO.cs

 public MotherDTO(Mother x) 
     { 
      Name = x.Name; 
      List<Children>Childrens= new List<Children>(); 
      foreach (Children obj in x.Childrens) 
      { 
       States.Add(obj); 
      } 
     } 

Mother.cs

public virtual string Name 
     { 
      get { return _Name; } 
      set 
      { 
       _Name = value; 
      } 
     } 


     public virtual Iesi.Collections.Generic.ISet<Children> Childrens 
     { 
      get 
      { 
       return _Childrens; 
      } 
      set 
      { 
       if (_Childrens == value) 
        return; 
       _Childrens = value; 
      } 
     } 
+0

誰でも.......? – user1084557

答えて

0

あなたはあなたの子供のコレクションにあなたのロードすでに(熱心)しているので、使用することができますAutomapperを使用してDTOを入力します。
ネストされたコレクションで動作するようにAutomapperを構成する方法を知りたい場合は、hereを読むことができます:

Mapper.CreateMap<Order, OrderDto>() 
    .ForMember(dest => dest.OrderLineDtos, opt => opt.MapFrom(src => src.OrderLines)); 
Mapper.CreateMap<OrderLine, OrderLineDto>() 
    .ForMember(dest => dest.ParentOrderDto, opt => opt.MapFrom(src => src.ParentOrder)); 
Mapper.AssertConfigurationIsValid(); 
関連する問題