我正在使用 EF6 对播种多对多关系有些困惑。
我有以下内容:
A保存User了许多ChartQueries(他们可以执行以获取图表)。AChartQuery通常只属于一个用户,但是每个用户都可以执行多个“共享ChartQuery” User。结果,我使用连接表建立了多对多UserChartQuery关系。这些表在连接表的每一侧以一对多的方式在数据库中正常运行。
但是,我不太了解如何播种或使用这种关系。我不想最终得到“shared” ChartQuerys 的多个副本(每个副本都有一个副本User)。相反,每个“共享”应该只有一行,ChartQuery它是 each 集合的一部分 User(以及仅属于该SavedChartQueries集合的其他非共享s )。ChartQueryUser
似乎我被迫为每个用户复制:
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吗?如果是这样,有什么办法可以避免这种情况?