2012-04-11 12 views
1

私は別のセッションに次のオブジェクトをマージして問題を抱えているマージ:NHibernateのは、団体

エンティティと、それは

ドメイン団体だ - > *サブドメイン - > *コントロール - > *

対策を

ドメインエンティティのマージは機能しますが、アソシエーションはマージされません。どうすればこの問題を解決できますか?

using (var session = SessionFactoryContainer.Current.Get(sessionFactoryName).OpenSession()) 
      { 
       using (var transaction = session.BeginTransaction()) 
       { 
        try 
        { 
         session.Merge(domain); 
         transaction.Commit(); 
        } 
        catch (Exception e) 
        { 
         transaction.Rollback(); 
         throw; 
        } 
       } 
      } 

マッピング

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using FluentNHibernate.Mapping; 
using ISMSControl.Domain; 

namespace ISMSControl.Infrastructure.Mappings 
{ 
    public class NDomainMapping : ClassMap<NDomain> 
    { 
     public NDomainMapping() 
     { 
      Table("domeinen"); 
      Id(m => m.Id, "id").UnsavedValue(-1); 
      Map(m => m.Code, "code_1"); 
      Map(m => m.Description, "omschrijving"); 
      Map(m => m.Explanation, "toelichting"); 
      Map(m => m.DateCreated, "createdat"); 
      Map(m => m.CreatedBy, "createdby"); 
      Map(m => m.DateModified, "modifiedat"); 
      Map(m => m.ModifiedBy, "modifiedby"); 

      HasMany(m => m.SubDomains) 
       .KeyColumn("domein") 
       .Inverse() 
       .Cascade.All(); 
     } 
    } 
} 

答えて

0

私は自分のDataContextを作成し、関連する列にプロパティをマッピングされました。私のModelTranslatorクラスは、自分自身のdatacontext実装に必要な型オブジェクトにドメインオブジェクトを変換します。

これが正しい解決策であるかどうかはまだ分かりませんが、今のところ私の問題は解決しました。