2012-05-04 18 views
1

Fluentによって生成されたDDLは、多対多リレーションシップのテーブルを構成する2つのカラムに対してPKを作成しないことに気づきました。接合部/リンク/ブリッジテーブル)。 StoreProductテーブルでNHibernateジャンクションテーブルのマルチカラムプライマリキーを使用したFluent多対多マッピング

例えば

(流暢ソースのExample.FirstProjectから)、

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

、あなたが2列あるだろう:

ProductFK, StoreFK

をこのStoreProductテーブルが暗黙のうちにありますFluentのHasManyToManyステートメントによって生成されます。私はPKとして2つの列を定義するDDLを生成させるようにしたいと思います。

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

が、私はそれがこれを行うにはしたいと思います:

この

は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", 
PRIMARY KEY(ProductFK, StoreFK)); 

を(つまり、私は取得流暢に指定流暢にすることが可能ですProductFKとStoreFKの両方のPKを持つStoreProductブリッジテーブル)

答えて

0

主キーの生成は、StoreProductを独自のDataClassとして実装する場合にのみ実行できます。関連付けテーブルとしてではありません。しかし、そのようにすれば、多対多ではなく、むしろ連鎖した多対1の関係を結ぶことになります。

+0

私が避けたかったのは、連鎖した多対1です。だからそれ以外の方法はない?特に、EF 4.1コードファーストがデフォルトの動作になっているときは意味がありません。デフォルトでFKペアにユニーク制約を適用しないのはなぜですか? –

+0

対応できない場合は、テーブルを使用して関係を記述するか、関連データの更新に使用するか、マップされたクラスとして使用できます。あなたは存在しないハイブリッドを探しています(私の知る限り)。 –

関連する問題