2009-11-05 1 views
6

Я был брошен в исследование проблемы производительности базы данных с помощью нового приложения, использующего NHibernate. Я заметил, что на некоторых таблицах NH делает вставку строки, за которой следует обновление той же строки с точно такими же данными. То, что я собрал до сих пор, заключается в том, что обновления после вставок выполняются в таблицах, которые определяют отношения «один-к-одному».Можно ли подавить обновление после вставки в NHibernate?

В любом случае, я бы ожидал, что NH указывает, что данные одинаковы и подавляет дополнительное обновление. Есть ли способ подавить это дополнительное обновление?

+0

код? обновление всех столбцов после вставки не является нормальным. – dotjoe

ответ

6

Похоже, что у вас есть двунаправленное отношение к ассоциации много-к-одному.

Решение этой проблемы состоит в том, чтобы добавить inverse="true" на стороне друг друга. Here is an example.

Вставка выполнена дочерним устройством, сохраняющим свои данные. Обновление выполняется родительским параметром parentId дочерней записи в базе данных. Если отношение было однонаправленным, первая вставка не имела бы parentId, и обновление потребовалось бы. При двунаправленном отношении обновление является излишним, как вы описываете. inverse="true" сообщает родителям, что ребенок отвечает за поддержание отношения, тем самым предотвращая дополнительное обновление.

+3

-1, потому что это происходит при не двунаправленных отношениях. – BradLaney

Смежные вопросы