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)?
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? –
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). –