Entity Framework がブリッジ テーブルをデータベース ファースト アプローチのエンティティとして作成する場合、通常は、多対多リレーションシップのブリッジ テーブルとして認識されるために必要なスキーマがブリッジ テーブルにないことを意味します。つまり、次のようになります。
ブリッジ テーブルには正確 (number of primary key columns in left entity) + (number of primary key columns in right entity)
な列が必要です。例: 左右のエンティティ テーブル (Contract
およびMessage
) に複合キーがなく、主キー列が 1 つしかない場合、ブリッジ テーブルの列数は正確に 2
でなければなりません。
ブリッジ テーブルのすべての列は、単一の複合主キーを形成する必要があります。
左側のエンティティ テーブルの主キーとブリッジ テーブルの最初の列の間に、外部キー制約をデータベースで定義する必要があります。つまり、ブリッジ テーブルの最初の列は外部キーです。左側のエンティティ テーブルに。
同じことが右側のエンティティ テーブルとブリッジ テーブルの最後の列にも当てはまります。
この点についてはよくわかりませんが (特に EF 1 の場合はそうではありません)、上記の 2 つの外部キー関係でカスケード削除を有効にする必要がある場合があります。
これらのルールが満たされている場合、ブリッジ テーブルはエンティティとして作成されません。これは、EF 1 を含む Entity Framework のすべてのバージョンに適用されます。
これらの要件のいずれかが満たされていない場合、EF は多対多の関係を検出せず、ブリッジ テーブルをエンティティとして作成しません。
満たされていない要件の詳細にもよるかもしれませんが、一般的には、EF モデルを変更して、それに応じてデータベース スキーマを変更せずに機能する多対多の関係を定義することはできないと思います。たとえば、ブリッジ テーブルに別の主キー列がある場合 (左エンティティと右エンティティへの FK に加えて)、おそらくブリッジ エンティティをモデルに保持する必要があります。
最善の解決策は、上記のルールを満たすようにデータベース スキーマを調整することです (変更できる場合)。