Entity framework 帮助EF代码优先,多对多关系

Entity framework 帮助EF代码优先,多对多关系,entity-framework,mapping,entity-framework-4.1,ef-code-first,Entity Framework,Mapping,Entity Framework 4.1,Ef Code First,个人和EHR(电子健康记录)是一对一的关系。 Person的EHRId可为null,而EHR的PersonId不可为null 同时,EHR和人必须是多对多相关的。 因为一个人可以有许多医生(由个人实体表示),而一个医生可以有许多EHR。 我希望在联接表上有额外的属性 我不知道如何在EF中定义这个 请帮忙 这是我的课 public class Person { public int ID { get; set; }

个人和EHR(电子健康记录)是一对一的关系。 Person的EHRId可为null,而EHR的PersonId不可为null

同时,EHR和人必须是多对多相关的。 因为一个人可以有许多医生(由个人实体表示),而一个医生可以有许多EHR。 我希望在联接表上有额外的属性

我不知道如何在EF中定义这个

请帮忙

这是我的课

    public class Person
        {
            public int ID { get; set; }            
            public string firstName { get; set; }            
            public string lastName { get; set; }            
            public ICollection<UserSpecialist> patients { get; set; }
            public int ehrID { get; set; }
            public virtual EHR ehr { get; set; }

        }

public class EHR
    {
        public int ID { get; set; }
        public bool asthmatic{ get; set; }
        public ICollection<UserSpecialist> specialists { get; set; }
        public int PersonID { get; set; }
        public virtual Person Person { get; set; }
    }

public class UserSpecialist
    {
        public int ID { get; set; }
        public DateTime creationDate { get; set; }
        public int PersonID { get; set; }
        public int EHRID { get; set; }
        public virtual Person Person { get; set; }
        public virtual EHR EHR { get; set; }
    }
公共类人物
{
公共int ID{get;set;}
公共字符串名{get;set;}
公共字符串lastName{get;set;}
公共ICollection患者{get;set;}
public int-ehrID{get;set;}
公共虚拟EHR EHR{get;set;}
}
公共级EHR
{
公共int ID{get;set;}
公共bool哮喘{get;set;}
公共ICollection专家{get;set;}
公共int PersonID{get;set;}
公共虚拟人{get;set;}
}
公共类用户专家
{
公共int ID{get;set;}
公共日期时间创建日期{get;set;}
公共int PersonID{get;set;}
public int-EHRID{get;set;}
公共虚拟人{get;set;}
公共虚拟EHR EHR{get;set;}
}
EF尝试创建数据库时抛出此错误

无法确定主体端 类型之间的关联 “Project.Person”和“Project.EHR”。 这个协会的主要目的 必须使用显式配置 关系可以是fluent API,也可以是fluent API 数据注释


请帮助

人员
EHR
不是一对一的关系,它们不能在EF中。您所定义的是双向的一对多。您还将这两个关系声明为必需的,因为FK不可为null


只有当EHR的PK(Id)也是FK to
Person
时,才能在EF中定义真正的一对一。一旦你定义了这一点,多对多的部分就会变得非常奇怪,因为这个人会和其他人的EHR有关。您的域描述很可能不正确。

您是否使用model builder配置了关系?Ladislav,如果您注意到,我确实亲自将EHR的PK声明为FK。我不知道为什么它的代码部分没有正确的颜色。在这种情况下,可以在EF?处建立一对一关系?。多对多的部分试图通过这种方式来实现。