实体框架关联:错误因为“从属角色”属性不是关键属性

时间:2011-12-09 19:37:33

标签: c# entity-framework domain-driven-design dns entity

使用Entity Framework 4.1

我有以下表格,我正在使用Entity Framework

  • 用户(UserId PK身份,用户名,密码)

  • 医师(PhysicianId唯一身份,UserId引用用户PK,PhysicianName)

  • PhysicianSite (SiteId,Location,PhysicianId FK to Physician table)

问题。实体框架不允许我将Physician与PhysicianSite关联,因为PhysicianId不是Physician表上的主键。

用户是医生的基础,因为我的应用程序有其他类型的用户,例如患者。

我收到以下错误

错误2错误113:多重性在“PhysicianSitePhysician”关系中的角色'Physician'中无效。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为*。

有人可以告诉我如何在没有PhysicianId作为Physician表的主键的情况下创建与PhysicianSite 在Entity Framework 中的关联吗?

3 个答案:

答案 0 :(得分:2)

实体框架需要外键链接到表的主键。但是,Entity Framework的主键不必与数据库中的主键匹配。如果告诉EF PhysicianId是主键,它将不会检查它是否真的如此。它很乐意接受PhysicianId的外键。

如果你有一些外键给PhysicianId,有些外键给真正的主键,你运气不好,但看起来不像你。

答案 1 :(得分:0)

通过再次添加所有表格,从EDMX和Update edmx中删除所有表格。如果不刷新所有导航属性,则会出现此类错误

答案 2 :(得分:0)

如果您有一个带有标识规范的列的链接表,请将其删除(它会将链接表限制为该链接表的ID的一个副本)。