私は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ますか? もしそうなら、これを回避する方法はありますか?