NHibernate Fluent Map HasMany вставляет NULL Внешний ключ

У меня есть компания, у которой много заказов. Я сопоставил их как следующие друг за другом:

Компания

HasMany(x => x.Orders).KeyColumn("CompanyID").Cascade.All().Inverse();

Заказ

References(x => x.Company).Column("CompanyID")

Однако, когда я создаю новый заказ для компании и пытаюсь его сохранить, я получаю ошибку SQL :«Невозможно вставить значение NULL в столбец «Идентификатор компании», таблица «Заказы»; столбец не допускает пустых значений. INSERT не работает. "

(это сгенерированный оператор SQL :INSERT INTO Order (Name, CompanyID )VALUES (?, ? ); выберите ОБЛАСТЬ _ИДЕНТИФИКАЦИЯ ()]])

Что является логической ошибкой, потому что действительно я установил, что CompanyID не может быть нулевым.

Однако с обратным я ожидал, что CompanyID будет заполнен правильным идентификатором, но, черт возьми, я не могу заставить его работать.Я попытался удалить инверсию (, поведение вообще не изменилось ), изменил каскад, установил ссылку, которая не может быть нулевой.

Я даже сделал столбец в таблице обнуляемым, чтобы позабавить NHibernate. Но это оставило меня с осиротевшим Орденом, поскольку он действительно создал запись Ордена, но оставил CompanyID NULL.

Это мой тестовый код, где я сделал новый заказ:

Company test = RepositoryBase<Company>.GetById(1);
test.Orders.Add(new Order("test"));
RepositoryBase<Company>.SaveWithTransaction(test);

Обновления кстати прошли все нормально.

В любом случае, я надеюсь, что кто-то здесь увидит, что я сделал неправильно в моем отображении.

Заранее спасибо.

5
задан scratchyback 28 June 2012 в 12:24
поделиться