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