Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架关联:错误,因为从属角色属性不是键属性_C#_Entity Framework_Domain Driven Design_Dns_Entity - Fatal编程技术网

C# 实体框架关联:错误,因为从属角色属性不是键属性

C# 实体框架关联:错误,因为从属角色属性不是键属性,c#,entity-framework,domain-driven-design,dns,entity,C#,Entity Framework,Domain Driven Design,Dns,Entity,使用实体框架4.1 我在实体框架中使用了以下表格 用户(用户ID PK身份、用户名、密码) 医生(医生ID唯一标识、用户ID引用用户PK、医生姓名) Physician站点(站点ID、位置、Physician ID FK到医师表) 问题。实体框架不允许我将医生与PhysicianSite关联,因为PhysicianId不是医生表上的主键 用户是内科医生的基础,因为我的应用程序有其他类型的用户,例如患者 我得到以下错误 错误2错误113:多重性在关系“PhysicianSiteMedical”

使用实体框架4.1

我在实体框架中使用了以下表格

  • 用户(用户ID PK身份、用户名、密码)

  • 医生(医生ID唯一标识、用户ID引用用户PK、医生姓名)

  • Physician站点(站点ID、位置、Physician ID FK到医师表)

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

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

我得到以下错误

错误2错误113:多重性在关系“PhysicianSiteMedical”中的角色“内科医师”中无效。因为依赖角色属性不是键属性,所以依赖角色的多重性上限必须为*


有人能告诉我如何在实体框架中创建与Physician-to-Physician站点的关联,而Physician ID不是医生表上的主键吗?

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


如果您有PhysicianId的一些外键,以及真实主键的其他外键,则您运气不好,但看起来并非如此。

从EDMX中删除所有表,然后通过再次添加所有表来更新EDMX。Ef不会刷新所有导航属性,因此会出现此类错误

如果您的链接表中有一列具有标识规范,请删除该列(这会将链接表限制为该链接表ID的一个副本).

问题:为什么PhysicianId无论如何都不是医生的PK?要在实体框架中为医生提供基本类型的用户,您需要将用户ID设置为医生的主键。我已经为医生提供了基本类型的用户。为了做到这一点,我必须使UserId成为内科医生表的主键,这很有意义。我必须通知实体框架,UserId是内科医生表的主键,所以我不能更改它。我想我不会走继承的路线,简单地在医生和用户之间建立关联,而不是医生从用户那里继承。啊,对不起,我忽略了这一点。在这种情况下,不幸的是,EF目前并不支持您想要的东西。根据,有计划在未来的版本中添加它,但您必须等待。感谢您的输入和文章!