【发布时间】:2013-08-08 06:43:07
【问题描述】:
我的数据库中有一个多对多关系:
CREATE TABLE [dbo].[PositionRequirements](
[Position_ID] [int] NOT NULL,
[Requirement_ID] [int] NOT NULL,
CONSTRAINT [PK_PositionRequirements] PRIMARY KEY CLUSTERED
(
[Position_ID] ASC,
[Requirement_ID] ASC
)
当我在 EF5 中生成模型时,我看不到表,而是在各自的 FK 表中与每侧的两个集合的关联。所以我在Requirements 中有一个Positions 的集合,在Positions 中有一个Requirements 的集合。很公平,我明白这里发生了什么。
我偶然发现了这个问题,展示了如何删除多对多行:
How to add or remove a many-to-many relationship in Entity Framework?
但问题是,我看不到任何方法来泛化此功能,但是如果在模型中定义了一个表,我可以看到这将相对容易。
有没有办法“欺骗” EF 创建 M-M 表,而不是关联集合?
我已经看到this page 以及使用IDatabaseInitializer<> 接口,但它似乎不起作用 - 我在图中没有看到表格。
这将简化我当前项目中的很多事情。
【问题讨论】:
-
如果向连接表添加额外的标量属性会怎样?
-
太棒了,谢谢...如此简单(但仍然有点骇人听闻,但它完成了工作!)
-
为了清楚起见,您需要在数据库中添加另一个字段,删除关联(也包括两个表!)然后从数据库中刷新模型 - 这将创建新表
-
至少现在我们已经确定这种行为是“设计使然”。应该可以覆盖它。也许其他人会为您的问题提供真正的答案:-)。与此同时,您可以继续使用解决方法。
标签: c# entity-framework many-to-many ef-database-first