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