Помогите с EF Code Во-первых, отношения многие ко многим - PullRequest
1 голос
/ 08 июня 2011

Человек и EHR (электронная медицинская карта) связаны между собой. Person имеет EHRId, обнуляемый, и EHR имеет PersonId, не обнуляемый.

В то же время ЭМК и Личность должны быть связаны многими со многими. Потому что у человека может быть много медиков (представленных личностью), а у медика может быть много 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 или аннотации данных.

Пожалуйста, помогите

1 Ответ

2 голосов
/ 08 июня 2011

Person и EHR не связаны между собой и не могут быть в EF. То, что вы определили, является двунаправленным один-ко-многим. Вы также объявили оба отношения как обязательные, потому что FK не обнуляются.

Реальное взаимно-однозначное значение может быть определено в EF только в том случае, если PK (Id) EHR также от FK до Person. Как только вы определите это, часть со многими ко многим становится действительно странной, потому что Person будет связан с EHRs других людей. Описание вашего домена, скорее всего, неверно.

...