EF6数据库首先映射一对一关系

Cop*_*bel 5 edmx ef-database-first entity-framework-6

在我的数据库中,我通过对外键表设置唯一约束来强制执行一对一关系。这被 Sql Server Management Studio 正确识别为一对一关系:

在此输入图像描述

我的问题是 EF6 没有将其识别为一对一关系并在 Person 类上生成一个 Collection:

在此输入图像描述

如果 t4 模板中的 itemCollection 包含唯一键信息,那么当表上有唯一键时,我可以轻松修改 T4 模板以不生成集合。但它们只包含外键信息。我猜这是因为 edmgen 工具没有从数据库中提取这些信息。

有没有办法强制该工具包含数据库中的所有约束,以便我可以在 t4 模板中使用此信息?

小智 1

我认为最好的解决方案是重新考虑您的表格和关系。

选项 1:如果这是一对一的关系,您可以将所有内容都放在一张表中吗?

选项 2:取出 PersonId 列。如果这确实是 1 对 1,甚至是“1 对 0 或 1”关系,则表应该共享主键。关系应该是 Id 和 Id 之间。如果您这样做,EF6 将正确识别它。