Мы используем nHibernate с SQL 2014. Во всех таблицах мы используем DBVersion (я полагаю, для целей управления версиями / обнаружения переходного состояния). Помимо этого идентификатора также используется столбец.
<version name="DBVersion" column="DBVersion" type="Int64" generated="never" unsaved-value="0"/>
<id name="ID" column="ID" type="guid" >
<generator class="guid.comb" />
</id>
В указанных c таблицах, имеющих отношение к внешнему ключу, версия 3.4 вызывает исключение внешнего ключа, в то время как с версиями 3.2.0 до 3.3.5 работает хорошо.
<many-to-one name="Obj" cascade="all-delete-orphan" column="Obj_ref" class="Data.Obj, Data" lazy="false" />
При случайных испытаниях мы обнаружили, что добавление несохраненного значения к идентификатору во всех таблицах также решило проблему.
<id name="ID" column="ID" type="guid" unsaved-value="undefined">
<generator class="guid.comb" />
</id>
Я попытался создать пример проекта из ну, но я не могу воспроизвести исключение FK.
Я не смог найти подходящих исправлений / изменений, связанных с этим, в журнале изменений или в Google. Кто-нибудь может направить меня, если это действительно правильный / рекомендуемый подход и почему он работает?
Спасибо, Ранга