NHibernate Fluent多对多映射与联结表中的多列主键

时间:2012-05-04 07:24:00

标签: c# nhibernate fluent-nhibernate sqlite nhibernate-mapping

我注意到Fluent生成的DDL不会为构成多对多关系表的2列(即联结/链接/桥接表)创建PK。

例如(来自Fluent源中的Example.FirstProject),

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

在StoreProduct表中,您有两列:

ProductFK, StoreFK

此StoreProduct表是通过Fluent的HasManyToMany语句隐式生成的。我想让它生成DDL,将2列定义为PK。

这是由Fluent for 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");

我希望这样做:

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));

是否可以使用Fluent(即以流利的方式指定,以便我得到StoreProduct桥表,以获得ProductFK和StoreFK的PK)?

1 个答案:

答案 0 :(得分:0)

只有将StoreProduct实现为自己的DataClass而不是关联表时,才能生成主键。但是这样你就不会最终得到多对多但却被多对一联系的关系。