Я использую NHibernate с базой данных рабочего стола SQL CE и получаю странную ошибку, когда пытаюсь выполнить обновление. SQL CE выдает ошибку 25026: «Невозможно вставить значение внешнего ключа, поскольку соответствующее значение первичного ключа не существует».
Исключение возникает при выполнении каскадного обновления свойства коллекции объекта сущности. Объект сущности - это владелец, а свойство коллекции - это проекты (IList), проекты для конкретного владельца. В моей базе данных первичный ключ таблицы Owners представляет собой трехсимвольную строку (инициалы владельца) с соответствующим внешним ключом в таблице Projects.
Вот почему я озадачен: NHibernate может получить все записи для определенного владельца (например, «DCV»). И в моем коде я могу без проблем добавить новый объект Project в Owner.Projects. Я беру значение идентификатора владельца непосредственно из объекта Owner, полученного из базы данных, поэтому я знаю, что первичный ключ существует в таблице Owners. Но когда я выполняю ISession.SaveOrUpdate () для моего объекта Owner, я получаю ошибку внешнего ключа, описанную выше.
Имею ли я дело с некоторой идиосинкразией NHibernate или какой-то приземленной ошибкой в моем коде или сопоставлениях? Мы очень ценим любые мысли, которые помогут мне решить эту проблему!
Дэвид Винеман Форсайт-системы