1

J'ai remarqué que le DDL généré par Fluent ne crée pas PK pour les 2 colonnes qui composent la table pour une relation plusieurs-à-plusieurs (c.-à-d. la jonction/lien/table de pont).NHibernate Fluent mappe plusieurs-à-plusieurs avec clé primaire multicolonne dans la table de jonction

Par exemple (de Example.FirstProject dans la source courant),

Store <-- many-to-many --> Product

Dans le tableau StoreProduct, vous auriez 2 colonnes:

ProductFK, StoreFK

Ce tableau de StoreProduct est implicitement généré via l'instruction HasManyToMany de Fluent. Je voudrais le faire générer DDL qui définit les 2 colonnes comme PK.

C'est ce qui est généré par Fluent pour SQLite:

create table StoreProduct 
(ProductFK INT not null, 
StoreFK INT not null, 
constraint FKE9A26716DC700501 foreign key (StoreFK) references "Store", 
constraint FKE9A26716815A48A8 foreign key (ProductFK) references "Product"); 

Je voudrais que ce faire:

create table StoreProduct 
(ProductFK INT not null, 
StoreFK INT not null, 
constraint FKE9A26716DC700501 foreign key (StoreFK) references "Store", 
constraint FKE9A26716815A48A8 foreign key (ProductFK) references "Product", 
PRIMARY KEY(ProductFK, StoreFK)); 

Est-ce possible avec Fluent (c.-à préciser dans Fluent si je reçois la table de pont StoreProduct pour avoir un PK de ProductFK et de StoreFK)?

Répondre

0

La génération d'une clé primaire peut uniquement être effectuée lorsque vous implémentez StoreProduct en tant que DataClass, et non en tant que table d'association. Mais de cette façon, vous ne finirez pas par avoir des relations plusieurs-à-plusieurs mais plutôt enchaînées.

+0

Enchaîné plusieurs-à-un est ce que je voulais éviter. Donc, il n'y a aucun moyen alors que cela? Cela n'a aucun sens, surtout quand EF 4.1 Code First est par défaut le comportement que je désire. Pourquoi n'appliquerait-il pas une contrainte unique sur la paire FK par défaut? –

+0

Ne peut pas être aidé, vous pouvez utiliser la table soit pour décrire une relation, qui est utilisée pour la mise à jour des données connexes, ou comme une classe mappée. Vous recherchez un hybride qui n'existe pas (à ma connaissance). –

Questions connexes