C# NHibernate Fluent多对多映射,在连接表中使用多列主键
我注意到Fluent生成的DDL没有为构成多对多关系表(即连接/链接/桥接表)的2列创建PK 例如(来自Fluent source中的example.FirstProject)C# NHibernate Fluent多对多映射,在连接表中使用多列主键,c#,nhibernate,fluent-nhibernate,sqlite,nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Sqlite,Nhibernate Mapping,我注意到Fluent生成的DDL没有为构成多对多关系表(即连接/链接/桥接表)的2列创建PK 例如(来自Fluent source中的example.FirstProject) 存储产品 在StoreProduct表中,您将有两列: ProductFK,StoreFK 此StoreProduct表是通过Fluent的HasManyToMany语句隐式生成的。我想让它生成DDL,将这两列定义为PK 这是Fluent for SQLite生成的结果: create table StoreProduc
存储产品
在StoreProduct表中,您将有两列:
ProductFK,StoreFK
此StoreProduct表是通过Fluent的HasManyToMany语句隐式生成的。我想让它生成DDL,将这两列定义为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是否可以实现这一点(即,在Fluent中指定,以便使StoreProduct桥接表同时具有ProductFK和StoreFK的PK)?只有将StoreProduct实现为其自身的数据类,而不是关联表时,才能生成主键。但这样你就不会有多对多的关系,而是多对一的关系。多对一的关系是我想要避免的。那么除此之外就没有别的办法了?毫无意义,尤其是当EF4.1代码第一次默认为我想要的行为时。为什么默认情况下它不在FK对上强制唯一约束?如果没有帮助,您可以使用该表来描述用于更新相关数据的关系,或者将其作为映射类。据我所知,你正在寻找一种不存在的混合动力车。