Как поставить в очередь операцию добавления в NHibernate? - PullRequest
0 голосов
/ 13 октября 2010

Есть ли какой-то способ очереди операции "Добавить" в NHibernate, как это делают Linq для SQL и Entity Framework?

Я хочу добавить сущность в хранилище, но не хочу сразу сохранять ее в базе данных, потому что бизнес-логика сложна. Я хочу отправить все изменения при вызове ITransaction.Commit (), точно так же, как это делает Entity Framework . Могу ли я сделать это?

ПРИМЕЧАНИЕ: Я обнаружил, что NHibernate выполнит команду вставки, как только я вызову метод ISession.Save (), это не ожидается.

ОБНОВЛЕНИЕ: Я пытаюсь установить для FlushMode значение Commit. Но он все равно сразу сохраняет сущность, а не фиксирует все изменения, когда я вызываю ITransaction.Commit ().

ОБНОВЛЕНИЕ 2 Я нашел причину здесь http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-flushing: (Исключением является то, что объекты, использующие генерацию собственных идентификаторов, вставляются при сохранении.) Таким образом, я могу только изменить генератор Id на что-то, кроме «идентичности»? Нет других решений, похожих на решение в EntityFramework?

Ответы [ 2 ]

3 голосов
/ 13 октября 2010

Используйте session.BeginTransaction () и читайте о транзакциях.

2 голосов
/ 13 октября 2010

Вот как identity работает;session.Save возвращает POID, и единственный способ получить его при использовании удостоверения - выполнить фактическую вставку.

Подробнее об этом здесь: http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html

...