У меня есть 2 таблицы следующим образом:NHibernate Mapping за столом Были Первичный ключ также является ключевым
create table Users
(
UserId int primary key identity not null
)
create table UserExternalKeys
(
UserIdRef int primary key not null,
ExternalKey varchar(50) unique not null
)
alter table UserExternalKeys
add constraint fk_UsersExternalKeys_Users
foreign key (UserIdRef)
references Users (UserId)
Каждый пользователь может иметь 0 или 1 внешние ключи. Вещи настраиваются таким образом, потому что добавление уникального столбца с нулевым значением в SQL Server не допускает более 1 нулевого значения.
На основании Ayende's post, похоже, что это может быть обработано с использованием отображения <one-to-one>
. Однако для этого требуется, чтобы таблица UserExternalKeys
имела свой собственный первичный ключ.
Новая схема будет выглядеть примерно так:
create table Users
(
UserId int primary key identity not null,
ExternalKeyRef int null
)
create table UserExternalKeys
(
UserExternalKeyId int primary key identity not null,
ExternalKey varchar(50) unique not null
)
alter table Users
add constraint fk_Users_UsersExternalKeys
foreign key (ExternalKeyRef)
references UserExternalKeys (UserExternalKeyId)
Я думаю, что это будет работать, но он чувствует, как я бы добавлять только UserExternalKeyId
колонку, чтобы успокоить NHibernate.
Любые предложения?
Добавление столбцов только для успокоения NHibernate - это как обряд посвящения. – marr75 2010-11-30 21:15:53