我有2個表如下:NHibernate的映射表格是主要密鑰也外鍵
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