【问题标题】:Entity Framework - Add Navigation Property Manually实体框架 - 手动添加导航属性
【发布时间】:2011-05-26 20:04:28
【问题描述】:

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

例如:

我有一个名为 People 的表,其中包含以下列: 性别ID 种族ID

Gender 和 Race 都有表,但 People 表中没有外键。

当我导入模型时,它没有为这些关系添加导航属性。我尝试手动添加它,但 From Role 和 To Role 被禁用。我不确定如何自己添加关系。我该怎么做?

【问题讨论】:

    标签: c# entity-framework entity-framework-4 navigation-properties


    【解决方案1】:

    是的 - 这不是那么简单。

    这就是你要做的:

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

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

    3 - 进入 模型浏览器 -> Associations

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

    5 - 在这里您需要设置关键和级联选项的端点。确保你得到正确的端点。您还可以在此处为您的隐式导航属性设置参考约束。

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

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

    希望这会有所帮助。

    【讨论】:

    • +1 用于保存我剩下的头发。我将添加#6 需要更改关联属性页面中的外键列,引用约束设置。点击 [...] 打开引用约束对话框并更改设计器插入到子表中的 Dependent Property 下的虚拟字段。
    • 您还必须转到子表的属性并删除设计器添加的虚拟字段(并且它不会映射到子表中的任何真实字段)。跨度>
    • 在查看的情况下,还要确保您的主键定义正确(右键单击选择相关字段,在属性中将它们标记为 EntityKey)。否则你可能会得到'Multiplicity is not valid in Role in relationship 因为从属角色指的是关键属性......'
    • 在 #2 上,您可能需要确保取消选中“将外键属性添加到实体”复选框。如果你真的不需要它,那会造成一些不必要的麻烦。
    • 一旦你再次从数据库更新你的模型,脚手架实体将保持手动添加的关联?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 2016-05-29
      • 1970-01-01
      相关资源
      最近更新 更多