我在两个实体之间有多对多的关系。作为批处理过程的一部分,我正在创建大量这些实体并将它们关联在一起。这是使用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);
这两个实体是正确持久化的,但是它们之间的关系表没有用两个实体之间的关系更新。
我知道这与无状态会话不跟踪对象这一事实有关。但是,我将如何实现多对多的持久性?
答案 0 :(得分:1)
无状态会话会忽略集合。您应该使用常规ISession并以合理的间隔(比如每500个对象)调用ISession.Clear
。这样一级缓存就不会变得臃肿,你会有不错的表现。