实体框架 - 手动添加导航属性

Dis*_*ile 112 c# entity-framework navigation-properties entity-framework-4

我从我的数据库生成了一个实体框架模型(4.0).我没有设计数据库,也没有对模式的任何控制,但是有一些表没有定义外键约束,但是定义了隐式关系.

例如:

我有一个名为People的表,其中包含以下列:GenderID RaceID

有Gender和Race的表,但People表中没有外键.

当我导入模型时,它没有为这些关系添加导航属性.我尝试手动添加它,但禁用了"从角色到角色".我不确定如何自己添加关系.我该怎么做呢?

RPM*_*984 177

是的 - 这不是那么简单.

这是你做的:

1 - 右键单击​​设计器,添加 - > 关联

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

3 - 进入模型浏览器 - > 关联

4 - 右键单击​​新创建的关联,单击" 属性"

5 - 在这里,您需要为键和级联选项设置端点.确保端点正确.您还可以在此处为隐式导航属性设置参照约束.

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

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

希望这可以帮助.

  • +1用于保存我头发的剩余部分.我将添加#6需要更改关联属性页面中的外键列,参照约束设置.点击[...]打开参照约束对话框,然后更改设计器插入Dependent Property下子表的虚拟字段. (20认同)
  • 您还必须转到子表的属性并删除设计器添加的虚拟字段(并且不映射到子表中的任何实际字段). (8认同)
  • 如果是View,还要确保正确定义主键(右键单击选择相关字段,在属性中将它们标记为EntityKey).否则你可能会得到'Multiplicity在关系中的角色无效,因为Dependent Role引用了关键属性......' (2认同)

dav*_*v_i 44

我看到这个博客文章提出了以下解决方案,这对我很有用(不幸的是我无法让RPM1984在我的情况下工作).

  1. 通过设计器背景右键单击上下文菜单添加关联
  2. 设置您的关联(确保取消选中创建外键)
  3. 右键单击关联,然后选择"属性"
  4. 单击...Referential Constraint按钮
  5. 设置内部键之间的关系
  6. 验证(从设计器上下文菜单)
  7. ???
  8. 利润!

  • +1 Point 4让我做对了,用RPM194答案忽略了. (4认同)