NHibernate: заполнить список незафиксированными данными, связанными только с FK в базе данных

Это уточнение и уточнение этого вопроса.

Предположим, у меня есть две таблицы, Foo а также Bar,

Bar имеет ФК для Foo,

В приложении таблицы представлены классами и Foo имеет список Bar s. Bar имеет свойство для идентификатора Foo у него есть ФК в базе данных.

В контексте Session а также Transaction с IsolationLevel.ReadUncommitted Я добавляю экземпляр Foo в базу данных, назначьте сгенерированный идентификатор Foo_id свойство экземпляра Bar а также добавить его в базу данных.

Теперь перед звонком Transaction.Commit() , можно ли прочитать NHibernate Foo со списком Bar из базы данных? То есть читать данные незафиксированными?

Я создал проект VS2012, который демонстрирует это. Он включает в себя проект SSDT для создания необходимой базы данных и тесты, показывающие, о чем я спрашиваю.

Спасибо.

1 ответ

Решение

В контексте той же транзакции вы можете прочитать все изменения, которые вы внесли в базу данных, так что да. Уровень изоляции транзакции не имеет значения для изменений, сделанных в этой транзакции.

Однако NHibernate обычно не обновляет уже загруженный объект. Но если вы Flush(), затем либо Clear(), либо Evict(), а затем снова прочитаете Foo, его коллекция будет включать экземпляр Bar. (Пока вы находитесь в одном сеансе, фиксация транзакции не имеет к этому отношения, за исключением того, что с настройками по умолчанию Commit() автоматически вызывает Flush().)

Другие вопросы по тегам