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

时间:2012-04-08 07:27:59

标签: c# .net sql entity-framework database-first

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

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

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

PageIDNavigation列的SQL是:

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

IDPage列的SQL是:

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

这是我原来的解决方案,这是Ladislav所提到的。

PageIDNavigation列的SQL是:

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

1 个答案:

答案 0 :(得分:6)

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