Я пытаюсь реализовать иерархию наследования классов с помощью NHibernate и SQL-сервера. Я сделал так, чтобы он отлично работал с таблицей в соответствии со стратегией иерархии (одна таблица и несколько элементов подкласса в файле отображения).
Однако стратегия «таблица на подкласс» (N + 1 таблиц и N элементов объединенного подкласса в одном файле отображения) имеет больше смысла в моем случае, потому что я хочу наложить некоторые ограничения на таблицы подклассов. Я борюсь с тем, какую связь PK / FK я должен поместить в таблицу мастер-класса (Persons) и таблицу подклассов (ContactPersons). Согласно документации NHibernate, между таблицами должна быть связь первичного ключа. Я попытался поместить ограничение FK из подкласса PK в мастер-класс PK, но оно все еще не работает. Я получаю следующее исключение:
NHibernate.Exceptions.GenericADOException: не удалось вставить: [Jobflow.Models.Entities.ContactPerson] [SQL: INSERT INTO ContactPersons (Email, Company, PersonID) ЗНАЧЕНИЯ (?,?,?)] ---> Система. Data.SqlClient.SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице «ContactPersons», если для параметра IDENTITY_INSERT установлено значение OFF.
Я пытался установить IDENTITY_INSERT в положение ON, но, похоже, это не помогло ...