Составной первичный ключ в отношении «многие ко многим» и столбец в коде - PullRequest
0 голосов
/ 23 января 2012

Я предполагаю, что это где-то покрыто, но я не могу найти.Думаю, я не использую правильные условия поиска.

В основном у меня есть таблица «многие ко многим», которую я определяю как POCO.Затем вы также можете посмотреть на нее как на таблицу с двумя отношениями «один ко многим», если хотите.

На одном конце есть таблица пользователя и таблица деления на другом конце.Однако каждая комбинация разделения пользователя может иметь несколько отношений, по одному на каждый год.Поэтому в ассоциированной таблице будет столбец int для года, а первичный ключ будет составным из UserId fk, DivisionId fk и Year.

Я не был уверен, как это сделать в EF 4.1 Code First.Я надеюсь, что есть способ DataAnnotation и FluentApi.

Если бы вы могли указать мне на учебник, который охватывает это, я был бы действительно счастлив.

Пользователь:

public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }

    //some other properties

    public virtual ICollection<DivisionService> Services { get; set; }
}

Разделение:

public class Division
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int DivisionId { get; set; }

    //some other properties

    public virtual ICollection<DivisionService> Services { get; set; }
}

Регистрация / Основной стол:

public class DivisionService
{
    public int Year { get; set; }  //this and the two foreign keys should be composite Primary Key

    //some other properties

    public virtual User User { get; set; }
    public virtual Division Division { get; set; }
}

1 Ответ

2 голосов
/ 25 января 2012

Вы можете использовать метод HasKey во FluentAPI и вызывать .HasKey(x => new { x.Year, x.UserId, x.DivisionId }).С аннотациями данных просто укажите атрибут [Key] для этих трех свойств.

...