Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate Fluent多对多映射,在连接表中使用多列主键_C#_Nhibernate_Fluent Nhibernate_Sqlite_Nhibernate Mapping - Fatal编程技术网

C# NHibernate Fluent多对多映射,在连接表中使用多列主键

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

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

例如(来自Fluent source中的example.FirstProject)

存储产品

在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对上强制唯一约束?如果没有帮助,您可以使用该表来描述用于更新相关数据的关系,或者将其作为映射类。据我所知,你正在寻找一种不存在的混合动力车。