数据库优先实体框架将唯一外键映射为一对多

本文关键字:映射 一对多 唯一 实体 框架 数据库 | 更新日期: 2023-09-27 18:30:19

我在 SQL Server 2008 R2 Microsoft中有一个名为 Page 的表,主键称为 ID 。我有另一个名为 Navigation 的表,带有列PageID. PageID是对 PageID 列的唯一外键引用。这将在NavigationPage记录之间创建一对一关系。

从数据库生成模型时,它会创建一对多关系,其中Page包含Navigation记录的列表。

这是否只是实体框架检测到涉及外键并忽略数据库中列的唯一性?

NavigationPageID列的 SQL 为:

[PageID] INTEGER FOREIGN KEY REFERENCES [Page](ID) UNIQUE NOT NULL

PageID列的 SQL 为:

[ID] INTEGER PRIMARY KEY IDENTITY(0, 1) NOT NULL

这是我最初提出的解决方案,这就是拉迪斯拉夫提到的。

NavigationPageID列的 SQL 为:

[ID] INTEGER PRIMARY KEY FOREIGN KEY REFERENCES [Page](ID) NOT NULL

数据库优先实体框架将唯一外键映射为一对多

实体框架尚不支持唯一键,因此此信息实际上被忽略,并且映射了一对多关系。在 EF 中使用一对一关系的唯一方法是通过共享主键(导航的 ID 将是 FK 到页面的 ID)。