2012-04-08 32 views
4

我在Microsoft SQL Server 2008 R2中有一个名为Page的表,主键为ID。我有另一个表Navigation与列PageIDPageIDPageID列的唯一外键引用。这创建了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 

回答

5

实体框架不支持的唯一密钥又那么这些信息是真的忽略,一对多的关系映射。在EF中使用一对一关系的唯一方法是通过共享主键(导航ID将FK指定给Page的ID)。

+0

我曾尝试过,但担心这是一个糟糕的设计决定。我想我们会回到那个。你是否碰巧提及了一个微软的页面,这个页面上的EF忽略了唯一的密钥? – 2012-04-08 08:31:41

+2

[这里是博客文章](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-关键支持)。 – 2012-04-08 10:44:11

相关问题