NHibernate IStatelessSession и отношения «многие ко многим» - PullRequest
3 голосов
/ 06 января 2011

У меня есть отношения многие ко многим между двумя сущностями. В рамках пакетного процесса я создаю большое количество этих объектов и связываю их вместе. Это использует 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 Ответ

1 голос
/ 12 сентября 2011

Коллекции игнорируются сеансами без сохранения состояния. Вы должны использовать обычную ISession и вызывать ISession.Clear с разумным интервалом (скажем, каждые 500 объектов). Таким образом, кэш 1-го уровня не будет раздутым, и вы получите приличную производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...