Я использую NHibernate в своем проекте.Я просто подумал получить от вас информацию.Проблема, с которой я сталкиваюсь, заключается в следующем:
У меня есть три таблицы БД, которые связаны между собой.Соотношение показано ниже
- Table1 (Field1_PK, Other_fields)
- Table2 (Field1_PK, Field2_FK_To_Table1_PK, Other_Fields)
- Table3 (Field1_PK, Field2_FK_Po_Table) 2)
Table3 -> Table2 -> Table1
У меня есть отдельные файлы сопоставления NH для этих трех объектов.Отношения между этими таблицами отображаются в файлах с использованием тегов.Каскад = "all-delete-orphan" также указан.Теперь я пытаюсь переместить одну запись в Таблице 3 в другую запись в Таблице 2, которая еще не существует, и, в свою очередь, необходимо перейти к другой записи в Таблице 1.Таким образом, в идеале в качестве одной транзакции следующие шаги должны выполняться в указанном порядке: 1. Удалить запись из Таблицы3 2. Удалить старую запись из Таблицы2 3. Удалить старую запись из Таблицы1 4. Создать новую запись в Таблице1 5. Создать новуюзапись в таблице 2 6. Создать новую запись в таблице 3
. Для этого я получил объект записи таблицы 3 и изменил его свойство, чтобы связать его с новым объектом записи таблицы 2.
К сожалению,Я получаю ошибку нарушения уникального ключа, которая генерируется на основе уникального ключа Table3.Причина в том, что step6 (INSERT) происходит первым.Поскольку в таблице уже есть запись с тем же ключом, она выдает ошибку.Я удалил индекс уникального ключа из таблицы и обнаружил, что функциональность работает нормально, но сначала выполняется тот же шаг6.Но в целом функционал работает нормально.Но у меня должен быть уникальный индекс ключа в таблице.
Пожалуйста, напишите свои комментарии, если у вас есть идеи по этому поводу!
Даниэль