Я изучаю NHibernate, чтобы наложить его на довольно своеобразную устаревшую базу данных. Другие приложения используют ту же живую базу данных, поэтому я не могу вносить изменения, которые повлияют на них.
Я столкнулся с проблемой, потому что одна таблица, представляющая аппаратные устройства, имеет два столбца, которые фактически используются в качестве первичных ключей. Один из них - настоящий первичный ключ, автоматически сгенерированный идентификатор строки. Другой - уникальный и непустой серийный номер оборудования.
Многие другие таблицы в базе данных связаны с этой таблицей по внешнему ключу. Однако некоторые из них используют реальный первичный ключ - целочисленный идентификатор строки - в качестве внешнего ключа, а некоторые вместо него используют аппаратный идентификатор устройства.
Обратите внимание, что на практике идентификатор оборудования и идентификатор строки, будучи спаренными, остаются парными.
Смогу ли я создать сопоставления для решения этой проблемы в NHibernate, или мне нужно будет создать несколько представлений, чтобы дать мне более стандартизованную схему, и использовать триггеры INSTEAD OF, чтобы сделать их обновляемыми?
Используемая БД - MSSQL 2000, на случай, если это имеет значение.