2011-01-06 16 views
3

私は2つのエンティティ間に多対多の関係を持っています。バッチ処理の一環として、私はこれらのエンティティを多数作成し、それらを関連づけています。これはIStatelessSessionを使用しています。NHibernate IStatelessSessionと多対多の関係

私はNHibernate 3.0を使用しています。

エンティティ:

var entity1 = new Entity1(); 
var entity2 = new Entity2(); 

entity1.Entities.Add(entity2); 
entity2.Entities.Add(entity1); 

Session.Insert(entity1); // IStatelessSession.Insert 
Session.Insert(entity2); 

は、2つのエンティティが正しく、永続化されるが、それらの間の関係テーブルが2つの間の関係で更新されていません。

class Entity1 
{ 
    ICollection<Entity2> Entities { get; set; } 
} 

class Entity2 
{ 
    ICollection<Entity1> Entities { get; set; } 
} 

は、基本的には、バッチコードが何かのように見えますエンティティ。

これは、ステートレスセッションがオブジェクトを追跡しないという事実と関係があることを理解しています。しかし、多対永続性を達成するにはどうすればいいですか?

+0

ステートレスセッションとは関係ありません。あなたのマッピングファイルを投稿できますか? – mcabral

答えて

1

コレクションはステートレスセッションでは無視されます。定期的なセッションを使用し、合理的な間隔(例えば、500オブジェクトごと)でISession.Clearを呼び出す必要があります。このようにして第1レベルのキャッシュは膨大にならず、まともなパフォーマンスを発揮します。