Ответ 1
Вы хотите использовать этот новый столбец в своем приложении? В таком случае вы не можете сделать это с вашей моделью. Отношение "многие ко многим" работает только в том случае, если таблица соединений не содержит ничего, кроме внешних ключей к основным таблицам. После добавления дополнительного столбца, открытого для вашего приложения, таблица соединений становится сущностью как любая другая = вам нужен третий класс. Ваша модель должна выглядеть так:
public class StudentImage
{
public int StudentId { get; set; }
public int ImageId { get; set; }
public int Order { get; set; }
public virtual Student Student { get; set; }
public virtual Image Image { get; set; }
}
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<StudentImage> Images { get; set; }
}
public class Image
{
public int Id { get; set; }
public string Filename { get; set; }
public virtual ICollection<StudentImage> Students { get; set; }
}
И ваше отображение также должно измениться:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<StudentImages>().HasKey(si => new { si.StudentId, si.ImageId });
// The rest should not be needed - it should be done by conventions
modelBuilder.Entity<Student>()
.HasMany(s => s.Images)
.WithRequired(si => si.Student)
.HasForeignKey(si => si.StudentId);
modelBuilder.Entity<Image>()
.HasMany(s => s.Students)
.WithRequired(si => si.Image)
.HasForeignKey(si => si.ImageId);
}