3

我有两个实体之间的多对多关系。作为批处理的一部分,我正在创建大量这些实体并将它们关联在一起。这是使用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);

这两个实体已正确持久化,但是它们之间的关系表并未随着两个实体之间的关系而更新。

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

4

1 回答 1

1

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

于 2011-09-11T20:49:21.090 回答