2011-01-06 32 views
3

我有两个实体之间的多对多关系。作为批处理流程的一部分,我正在创建大量这些实体并将它们联系在一起。这是使用IStatelessSessionNHibernate无状态会话和多对多关系

我使用的是NHibernate 3.0。

实体:

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

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

基本上批处理代码看起来是这样的:

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

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

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

两个实体正确地持久化,但是它们之间的关系表未更新与两者之间的关系实体。

我知道这与无状态会话不跟踪对象的事实有关。但是,我将如何去实现多对多的持久性?

+0

我不确定它与无状态会话有关。你可以发布你的映射文件吗? – mcabral 2011-03-30 18:40:19

回答

1

集合被无状态会话忽略。您应该使用常规ISession,并以合理的时间间隔(例如,每500个对象)呼叫ISession.Clear。这样一级缓存不会变得臃肿,你会有不错的表现。