NHibernate IStatelessSession和多对多关系

时间:2011-01-06 05:17:57

标签: nhibernate many-to-many istatelesssession

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

我正在使用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);

这两个实体是正确持久化的,但是它们之间的关系表没有用两个实体之间的关系更新。

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

1 个答案:

答案 0 :(得分:1)

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