我在Microsoft SQL Server 2008 R2中有一个名为Page
的表,其中包含一个名为ID
的主键。我有另一个名为Navigation
的表格,其中包含PageID
列。 PageID
是对ID
Page
列的唯一外键引用。这会在Navigation
和Page
记录之间创建一对一的关系。
从数据库生成模型时,它会创建一对多关系,其中Page
包含Navigation
条记录列表。
这只是实体框架检测到是否涉及外键并忽略数据库中列的唯一性?
PageID
中Navigation
列的SQL是:
[PageID] INTEGER FOREIGN KEY REFERENCES [Page](ID) UNIQUE NOT NULL
ID
中Page
列的SQL是:
[ID] INTEGER PRIMARY KEY IDENTITY(0, 1) NOT NULL
这是我原来的解决方案,这是Ladislav所提到的。
PageID
中Navigation
列的SQL是:
[ID] INTEGER PRIMARY KEY FOREIGN KEY REFERENCES [Page](ID) NOT NULL
答案 0 :(得分:6)
实体框架尚不支持唯一键,因此实际上忽略了此信息,并映射了一对多关系。在EF中使用一对一关系的唯一方法是通过共享主键(导航的ID将是FK到Page的ID)。