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ブリッジテーブル)
私が避けたかったのは、連鎖した多対1です。だからそれ以外の方法はない?特に、EF 4.1コードファーストがデフォルトの動作になっているときは意味がありません。デフォルトでFKペアにユニーク制約を適用しないのはなぜですか? –
対応できない場合は、テーブルを使用して関係を記述するか、関連データの更新に使用するか、マップされたクラスとして使用できます。あなたは存在しないハイブリッドを探しています(私の知る限り)。 –