10

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

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. 在edmx后面的xml中手动创建这些复合外键(痛苦)
  2. 让实体框架正确生成这些外键,以便我拥有映射

谢谢!

4

2 回答 2

2

Entity Framework Database First 不会按照您的需要使用唯一键。如果您希望它们成为导航属性,则应将它们设置为外键。

现在,您必须选择:1)您只需要 NavPrs,2)您还需要连接表作为一个实体。

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

2)要实现这一点,请将它们保留为外键,并为您的联结表声明一个身份类型 ID 列并将其设置为主键。

这应该适合你

于 2013-07-26T04:18:39.800 回答
0

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

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

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

于 2021-01-19T15:14:20.853 回答