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

Mic*_*ray 5 .net c# sql entity-framework database-first

我在Microsoft SQL Server 2008 R2中有一个表,调用Page了一个名为的主键ID.我有另一个Navigation用列调用的表PageID.PageID是对一种独特的外键引用ID的列Page.这会在记录NavigationPage记录之间创建一对一的关系.

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

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

PageID列的SQL Navigation是:

[PageID] INTEGER FOREIGN KEY REFERENCES [Page](ID) UNIQUE NOT NULL
Run Code Online (Sandbox Code Playgroud)

ID列的SQL Page是:

[ID] INTEGER PRIMARY KEY IDENTITY(0, 1) NOT NULL
Run Code Online (Sandbox Code Playgroud)

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

PageID列的SQL Navigation是:

[ID] INTEGER PRIMARY KEY FOREIGN KEY REFERENCES [Page](ID) NOT NULL
Run Code Online (Sandbox Code Playgroud)

Lad*_*nka 6

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

  • [这里是博客文章](http://blogs.msdn.com/b/efdesign/archive/2011/03/09/unique-constraints-in-the-entity-framework.aspx)关于EF中的唯一约束年.这是功能的预览,可以在将来实施.它不会成为即将推出的.NET 4.5/EF 5.0的一部分.如果您希望在[Data UserVoice]上为EF投票选择唯一约束(http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1050579-unique-constraint-ie-candidate-关键支持). (2认同)