人与EHR(电子健康记录)是一对一相关的。 人有EHRId可以为空,EHR有PersonId不可为空。
同时EHR和Person必须是多对多的。 因为一个人可以有许多医务人员(由人实体代表),而医生可以拥有许多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; }
}
当EF尝试创建数据库时会抛出此错误
无法确定主要目标 类型之间的关联 'Project.Person'和'Project.EHR'。 这个协会的主要目的 必须使用明确配置 无论是关系流畅的API还是 数据注释。
请帮忙
答案 0 :(得分:2)
Person
和EHR
并非一对一相关,也不能在EF中。您定义的是双向一对多。您还根据需要声明了两个关系,因为FK不可为空。
只有当EHR的PK(Id)也是FK到Person
时,才能在EF中定义真正的一对一。一旦你定义了这个与多对多的部分变得非常奇怪,因为人将与其他人的EHR相关。您的域名描述很可能不正确。