Где я могу найти документацию для NHibernate ISession.Persist ()? - PullRequest
5 голосов
/ 17 января 2011

NHessionnate ISession предоставляет метод Persist () с двумя перегрузками.Я не могу найти документацию по этому методу нигде.Это даже не упоминается в справочном материале NHibernate на http://nhibernate.info/doc/nh/en/index.html.

Этот метод устарел или будет?Когда это должно быть использовано?Как это можно сравнить с SaveOrUpdate ()?

Любые указатели будут высоко оценены.

1 Ответ

4 голосов
/ 17 января 2011

Последний комментарий к этой теме http://opensource.atlassian.com/projects/hibernate/browse/HHH-1273 очень хорошо определяет это:

persist () четко определен. Это делает временный экземпляр постоянный. Тем не менее, это не гарантирует, что Значение идентификатора будет присвоено постоянный экземпляр немедленно, назначение может произойти на одном уровне время. В спецификации не сказано, что проблема у меня с persist ().

persist () также гарантирует, что будет не выполнять оператор INSERT, если он вызывается вне транзакции границы. Это полезно в длительные разговоры с расширенный контекст сеанса / постоянства.

Требуется метод, подобный persist ().

save () не гарантирует то же самое, это возвращает идентификатор, и если ВСТАВКА должна быть выполнена, чтобы получить идентификатор (например, генератор «идентичности», не "последовательность"), эта вставка происходит немедленно, независимо от того, если вы внутри или вне транзакции. Это не хорошо в долгосрочной перспективе разговор с расширенным Контекст сеанса / постоянства.

Кроме того, из того, что я мог почерпнуть из других источников, видно, что сущность, имеющая cascade = "persist", будет каскадироваться во время вызова, а не при сбросе. Это тоже может быть очень полезно.

...