0

私はEF6を使用していますが、多対多の関係をシードすることに混乱があります。

私は次のものを持っています:

AUserには多くの保存がありChartQueriesます(チャートを取得するために実行できます)。通常ChartQuery、 は 1 人のユーザーのみに属しますが、ChartQuery全員Userが実行できる「共有」 がいくつかあります。その結果、結合テーブルを使用して多対多の関係を設定しましたUserChartQuery。データベース内のテーブルは、結合テーブルの両側で 1 対多で問題なく稼働しています。

ただし、この関係をシードまたは使用する方法がよくわかりません。ChartQuery「共有」の複数の重複(各の重複)を終わらせたくありませんUser。代わりに、各のコレクションChartQueryの一部である 「共有」ごとに 1 つの行のみが存在する必要があります(そのコレクションのみに属する他の非共有 と一緒に)。UserSavedChartQueriesChartQueryUser

ユーザーごとに複製する必要があるようです:

  var sharedChartQuery = new ChartQuery { ... }; 
  var nonSharedChartQuery = new ChartQuery { ... };

  var userOneChartQueryOne = new UserChartQuery { User = userOne, ChartQuery = sharedChartQuery  };

  var userTwoChartQueryOne = new UserChartQuery { User = userTwo, ChartQuery = sharedChartQuery };
  var userTwoChartQueryTwo = new UserChartQuery { User = userTwo, ChartQuery = nonSharedChartQuery }; 

  context.UserChartQueries.Add(userOneChartQueryOne);
  context.UserChartQueries.Add(userOneChartQueryTwo);
  context.UserChartQueries.Add(userTwoChartQueryTwo);

まず第一に、これは( UserChartQueries テーブルを直接介して)シードする正しい方法ですか、それとも各Userの SavedChartQueries ナビゲーションプロパティをシードする必要がありますか?

sharedChartQueryそして、これはそれぞれの結合テーブルで重複しUserますか? もしそうなら、これを回避する方法はありますか?

4

1 に答える 1