私はEF6を使用していますが、多対多の関係をシードすることに混乱があります。
私は次のものを持っています:
AUser
には多くの保存がありChartQueries
ます(チャートを取得するために実行できます)。通常ChartQuery
、 は 1 人のユーザーのみに属しますが、ChartQuery
全員User
が実行できる「共有」 がいくつかあります。その結果、結合テーブルを使用して多対多の関係を設定しましたUserChartQuery
。データベース内のテーブルは、結合テーブルの両側で 1 対多で問題なく稼働しています。
ただし、この関係をシードまたは使用する方法がよくわかりません。ChartQuery
「共有」の複数の重複(各の重複)を終わらせたくありませんUser
。代わりに、各のコレクションChartQuery
の一部である 「共有」ごとに 1 つの行のみが存在する必要があります(そのコレクションのみに属する他の非共有 と一緒に)。User
SavedChartQueries
ChartQuery
User
ユーザーごとに複製する必要があるようです:
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
ますか? もしそうなら、これを回避する方法はありますか?