1

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

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

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

在 StoreProduct 表中,您将有 2 列:

ProductFK, StoreFK

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

这是 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 是否可行(即以 fluent 指定,所以我让 StoreProduct 桥表具有 ProductFK 和 StoreFK 的 PK)?

4

1 回答 1

0

仅当您将 StoreProduct 实现为它自己的 DataClass 而不是关联表时,才能生成主键。但是这样你最终不会有一个多对多的关系,而是链式的多对一关系。

于 2012-05-04T12:08:11.510 回答