étrangères J'ai 2 tables comme suit:NHibernate Cartographie d'une table ont été la clé primaire est également une clé
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)
Chaque utilisateur peut avoir un 0 ou 1 touches externes. Les choses sont configurées de cette façon car l'ajout d'une colonne unique nullable à SQL Server n'autorise pas plus de 1 valeur nulle.
Basé sur Ayende's post, il semble que cela pourrait être géré en utilisant un mappage <one-to-one>
. Cependant, cela nécessiterait que la table UserExternalKeys
possède sa propre clé primaire.
Le nouveau schéma ressemblerait à quelque chose comme ceci:
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)
Je pense que cela fonctionnerait, mais il se sent comme je n'ajouterai la colonne UserExternalKeyId
pour apaiser NHibernate.
Des suggestions?
Ajouter des colonnes pour apaiser NHibernate est comme un rite de passage. – marr75