отношения многие ко многим в EF 4.1 - PullRequest
1 голос
/ 13 октября 2011

Я просто делаю небольшое приложение с 3 таблицами.

Позиции заявителей ApplicantsPerPosition.

Эта последняя связь между многими и многими другими будет иметь отношение ко многим.1006 * Однако я использую подход CODE First, но я не уверен, правильно ли я делаю код.

Я добавил ICollection и ICollection в другие 2 таблицы.

Это правильно или нет?Я сделал это таким образом, чтобы иметь возможность легко перемещаться по свойствам связанных объектов, однако я не уверен, будет ли в конце это преобразовано только в 3 таблицы, как я это сделал бы в подходе DATABASE First.

Пример кода здесь:

public class Position
    {
        public int id { get; set; }
        [StringLength(20, MinimumLength=3)]
        public string name { get; set; }
        public int yearsExperienceRequired { get; set; }
        public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }
    }

    public class Applicant
    {
        public int ApplicantId { get; set; }
        [StringLength(20, MinimumLength = 3)]
        public string name { get; set; }
        public string telephone { get; set; }
        public string skypeuser { get; set; }
        public ApplicantImage photo { get; set; }
        public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }

    }

    public class ApplicantPosition
    {
        public virtual ICollection<Position> appliedPositions { get; set; }
        public virtual ICollection<Applicant> applicants { get; set; }
        public DateTime appliedDate { get; set; }
        public int StatusValue { get; set; }

        public Status Status
        {
            get { return (Status)StatusValue; }
            set { StatusValue = (int)value; }
        }


    }

1 Ответ

2 голосов
/ 13 октября 2011

Если вы моделируете таблицу соединений как отдельную сущность, то у вас есть отношения один-ко-многим между этой сущностью и двумя другими сущностями.Вам также необходимо выставить столбцы первичного ключа как свойства в объекте ссылки.

public class Position
{
    public int id { get; set; }
    [StringLength(20, MinimumLength=3)]
    public string name { get; set; }
    public int yearsExperienceRequired { get; set; }
    public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }
}

public class Applicant
{
    public int ApplicantId { get; set; }
    [StringLength(20, MinimumLength = 3)]
    public string name { get; set; }
    public string telephone { get; set; }
    public string skypeuser { get; set; }
    public ApplicantImage photo { get; set; }
    public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }

}

public class ApplicantPosition
{
    public int ApplicantId { get; set; }

    public int PositionId { get; set; }

    public virtual Position Position { get; set; }

    public virtual Applicant Applicant { get; set; }

    public DateTime appliedDate { get; set; }
    public int StatusValue { get; set; }

    public Status Status
    {
        get { return (Status)StatusValue; }
        set { StatusValue = (int)value; }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...