アラートと受信者の 2 つのグループに分類される 4 つのテーブル/エンティティがあります。グループのいずれかのエンティティを、他のグループのいずれかのエンティティにマップできます (アラートには、多数の受信者と受信者グループなどを含めることができます)。
テーブル:
- アラート
- AlertGroups (アラートとの 1 対多の関係)
- 受信者
- RecipientGroups (受信者との多対多の関係)
4 つのジョイント可能オブジェクト (AlertRecipients、AlertRecipientGroups など) を作成する代わりに、4 つの列を持つ 1 つの結合テーブルを作成したいと考えています。各列は、エンティティ タイプの 1 つの null 許容 FK です。
SQL でテーブルを作成し、Fluent API を使用して次のようにコンテキストを設定しました。
modelBuilder.Entity<AlertGroup>()
.HasMany(ag => ag.RecipientGroups)
.WithMany(rg => rg.AlertGroups)
.Map(m => m.ToTable("AlertRecipients")
.MapLeftKey("AlertGroupID")
.MapRightKey("RecipientGroupID"));
modelBuilder.Entity<AlertGroup>()
.HasMany(ag => ag.Recipients)
.WithMany(rg => rg.AlertGroups)
.Map(m => m.ToTable("AlertRecipients")
.MapLeftKey("AlertGroupID")
.MapRightKey("RecipientID"));
しかし、私はこのエラーが発生します:
指定されたスキーマは無効です。エラー:
(251,6) : エラー 0019: スキーマ 'dbo' およびテーブル 'AlertRecipients' を持つ EntitySet 'AlertGroupRecipient' は既に定義されています。各 EntitySet は、一意のスキーマとテーブルを参照する必要があります。
私がやろうとしていることを行うための回避策はありますか?