使用数据库优先的Entity Framework映射唯一外键为一对多。

6
我在 Microsoft SQL Server 2008 R2 中有一个名为 Page 的表,其中包含一个名为 ID 的主键。我还有另一个名为 Navigation 的表,其中包含一个名为 PageID 的列。 PageID 是对 Page 表中的 ID 列的唯一外键引用。这样创建了 NavigationPage 记录之间的一对一关系。
从数据库生成模型时,它会创建一个一对多关系,其中一个 Page 包含一个 Navigation 记录列表。
这是否仅仅是实体框架检测到存在外键并忽略数据库中列的唯一性? Navigation 表中 PageID 列的 SQL 如下:
[PageID] INTEGER FOREIGN KEY REFERENCES [Page](ID) UNIQUE NOT NULL
< p > < code > Page 中< code > ID 列的SQL语句为:

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

以下是我最初的解决方案,这也是Ladislav提到的。

Navigation表中PageID列的SQL代码如下:

[ID] INTEGER PRIMARY KEY FOREIGN KEY REFERENCES [Page](ID) NOT NULL
1个回答

6

Entity Framework目前还不支持唯一键,所以这个信息会被忽略,只能映射成一对多关系。在EF中使用一对一关系的唯一方法是通过共享主键(导航属性的ID将作为页面ID的外键)。


我最初尝试过那种方法,但担心这是一个糟糕的设计决策。我想我们会回到那个方案。你有没有微软页面的参考资料,说明EF忽略唯一键? - Michael J. Gray
2
这是去年关于EF中唯一约束的博客文章。这是一个功能的预览,希望将来能够实现。它不会成为即将推出的.NET 4.5 / EF 5.0的一部分。如果您想在EF中使用唯一约束,请在Data UserVoice上为它们投票。 - Ladislav Mrnka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接