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