实体框架数据库第一 - 复合外键

时间:2012-11-28 00:04:59

标签: entity-framework entity-framework-5 composite-key ef-database-first

我有一个包含几个复合外键的数据库。例如,以下是外键的生成脚本:

ALTER TABLE [dbo].[WorkingRosters]  WITH NOCHECK ADD  CONSTRAINT
[FK_WorkingRoster_ShiftLeaveCode] FOREIGN KEY([OrganizationID], [ShiftLeaveCode])
REFERENCES [dbo].[ShiftLeaveCodes] ([OrganizationID], [Code])
GO

我正在尝试使用Entity Framework 5 Database-First从此数据库生成模型。但是,复合外键的关联不会与所有表和其他简单外键一起生成。

我怎么能:

  1. 在xml后面手动创建这些复合外键 edmx(痛苦的)
  2. 让实体框架正确生成这些外来的 密钥,以便我有映射
  3. 谢谢!

2 个答案:

答案 0 :(得分:1)

实体框架数据库首先不会根据需要使用唯一键。如果您希望它们是导航属性,则应将它们设置为外键。

现在,您必须选择:1)您只需要NavPrs,2)您还需要将联结表作为实体。

1)要实现此目的,只需将这些外键设置为复合主键。

2)要实现此功能,请将它们保留为外键,并为联结表声明标识类型ID列,并将其设置为主键。

这应该对你有用

答案 1 :(得分:0)

我在 EF6 中遇到了同样的问题,其中 Visual Studio 中的“从数据库更新模型”无法识别复合外键,该外键引用了另一个表中具有唯一索引但不是复合主键的列参考表。

在将被引用列作为被引用表中的复合 PK 并重做“从数据库更新模型”后,外键被识别为导航属性。

即使引用的列成为 PK 解决了我在 EF6 中的问题。