我有一个包含几个复合外键的数据库。例如,下面是外键的生成脚本:
ALTER TABLE [dbo].[WorkingRosters] WITH NOCHECK ADD CONSTRAINT
[FK_WorkingRoster_ShiftLeaveCode] FOREIGN KEY([OrganizationID], [ShiftLeaveCode])
REFERENCES [dbo].[ShiftLeaveCodes] ([OrganizationID], [Code])
GO
我正在尝试使用实体框架 5 数据库优先从此数据库生成模型。但是,复合外键的关联不会与所有表和其他简单外键一起生成。
我怎样才能:
- 在电火花(疼痛)
- 让实体框架正确生成这些外来的键,以便我有映射
谢谢!
实体框架数据库优先不会根据需要使用唯一键。如果希望它们成为导航属性,则应将它们设置为外键。
现在,您必须选择:1)您只需要NavPrs,2)您还需要连接表作为实体。
1) 为此,只需将这些外键设置为复合主键。
2) 要实现此目的,请将它们保留为外键,并为联结表声明标识类型 ID 列并将其设置为主键。
这应该适合您
我在 EF6 中遇到了同样的问题,其中 Visual Studio 中的"从数据库更新模型"无法识别复合外键,该外键引用了另一个表中的列,这些列具有唯一索引,但不是引用表的复合主键。
在使引用的列成为引用表中的复合 PK 并重做"从数据库更新模型"后,外键被识别为导航属性。
即将引用的列设为 PK 在 EF6 中为我解决了这个问题。