99

我从我的数据库中生成了一个实体框架模型(4.0)。我没有设计数据库,也没有对模式进行任何控制,但有几个表没有定义外键约束,但却有一个隐式关系定义。实体框架 - 手动添加导航属性

例如:

我有以下几列一个表就叫人: GenderID RaceID

有两个性别和种族的表,但没有在人民表的外键。

当我导入模型时,它没有为这些关系添加导航属性。我试图手动添加它,但从角色和角色被禁用。我不知道如何自己添加关系。我该怎么做呢?

回答

164

是的 - 这不是那么简单。

这里就是你要做的:

1 - 右键单击​​设计师,添加 - >协会

2 - 设置的关联和基数(人*。1分性别,人民* ..1种族)

3 - 去到模型浏览器 - >协会

4 - 鼠标右键点击你新建的协会,单击属性

5 - 在这里你需要设置密钥和级联方案的终结点。确保你得到正确的端点。您也可以在此为您的隐式导航属性设置引用约束。

6 - 将导航属性映射到相关表/字段。

7 - 验证您的模型,交叉手指。

希望这会有所帮助。

+18

+1用于保存我的头发剩下的部分。我将添加#6需要更改关联的属性页面中的外键列,参照约束设置。点击[...]以打开参考约束对话框,并将设计器插入子表中的虚拟字段更改为从属属性。 – 2011-12-17 23:25:55

+7

您还必须转到子表的属性并删除设计者添加的虚拟字段(并且该字段不映射到子表中的任何实际字段)。 – 2011-12-17 23:41:47

+1

在查看的情况下,还要确保您的主键定义正确(右键单击选择相关字段,在属性中将它们标记为EntityKey)。 否则,您可能会得到'多重性在关系中的角色中无效因为相关角色指的是关键属性...' – 2015-04-17 00:32:18

39

我碰到了this blog post,它提出了以下解决方案,这对我很好(不幸的是我无法让RPM1984在我的情况下工作)。

  1. 通过设计师的背景添加关联右键点击
  2. 设置你的公会上下文菜单(一定要取消建立外键)
  3. 右键单击该协会并选择属性
  4. 点击......按钮参照约束
  5. 设置内
  6. 按键之间的关系,验证(从设计师的上下文菜单)
  7. ???
  8. 利润!
+3

+1第4点让我做对了,用RPM194答案忽略了这一点。 – 2014-05-21 18:21:09