2009-09-10 4 views
0

0 голоса внизNHibernate Oracle - транзакция Выпуска

Привета,

Я бег с таким же выпуском в момент фиксации транзакции он терпит неудачу. Я изменил всю строку отображения с помощью AnsiString. Но все же я получаю ошибку.

Select работает нормально, даже удаление также отлично работает.

Если моя транзакция содержит только одну инструкцию вставки или инструкцию обновления, то она также работает нормально.

Но когда есть более одного запросов (Insert/Update), то в момент совершения он дает мне ошибку, что «Целостность Constraint: Родитель ключ не найден»

Можете ли вы мне помочь?

Махеш ....

+0

Как вы сопоставляются сущность? Есть ли отношения HasMany или какая-то другая ассоциация? –

ответ

0

эта ошибка является ошибкой ограничения целостности. Это означает, что в конце вашей транзакции ребенок, у которого нет родителя в отношениях между родителем и ребенком. Поскольку вы получаете эту ошибку при фиксации, это означает, что FOREIGN KEY объявлен как DEFERRABLE (начальный отложенный) и проверяет целостность только на время фиксации.

У вас есть проблема в вашей логике, возможно, вы можете опубликовать простой пример (CREATE TABLE parent ... CREATE TABLE child ... UPDATE/INSERT), и мы можем помочь вам дальше.

0

NHibernate вставляет (или обновляет) своего сотрудника до, вставляя вновь созданный тип employee_type. Ошибка означает, что вашему сотруднику не хватает его employee_type в базе данных.

2 варианта:

  1. Сделайте ISession.Flush после создания employee_type и до создания (или updateing) вашего сотрудника.
  2. Измените внешний ключ, подлежащий отложению.
0

Я получил решение ....

Это происходит со мной из-за NHibernate поведения ...

Я создал последовательность явно и триггерами для Autoincrement.

, но он сгорит два раза, сначала, когда я сделал нормальное сохранение и второй, когда я звоню транзакции. Таким образом, отсутствует совпадение между фактическим использованием и ссылкой id.

Так что это дает мне ошибку - родительский ключ не найден.

Я только что удалил все триггер и последовательности, и в файле сопоставления я добавил сгенерированный класс в качестве приращения. : D

"класса генератора =" приращение»"

Это отлично работает для меня ...

Спасибо, Махеш

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