Таблица соединений с дополнительными столбцами в EF4 CTP4 Code First

Учитывая эту схему sql:

create table [dbo].[Courses_Students] (
    [DummyColumn] [int] null,
    [CourseId] [int] not null,
    [StudentId] [int] not null,
    primary key ([CourseId], [StudentId])
);

Как определить составной первичный ключ и дополнительные столбцы в EntityConfiguration?


person Ismael    schedule 08.11.2010    source источник


Ответы (1)


Вам нужно объявить класс Courses_Students

public class Courses_Students
{
    [Key]
    public int CourseId { get; set; }
    public int StudentId { get; set; }
    public int DummyColumn { get; set; }

    public virtual ICollection<Course> Courses { get; set; }
    public virtual ICollection<Student> Students { get; set; }
}

Ключ на CourseId предназначен для предотвращения ошибки компиляции, вы переопределите его дальше.

Затем в вашем классе DbContext вы переопределяете OnModelCreating следующим образом:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Courses_Students>()
        .HasKey(e => new { e.CourseId, e.StudentId })
        .MapSingleType()
        .ToTable("Courses_Students");
}
person Christian Lavallee    schedule 08.11.2010
comment
Но я ожидал, что в классе Courses_Students будут на самом деле свойства навигации. По крайней мере, это то, что я получаю при создании модели с помощью конструктора EF. - person Ismael; 08.11.2010
comment
Спасибо, Кристиан, этот ответ помог мне. :] - person Gleno; 18.06.2011