Из того, что я могу сказать, ваш класс Image не имеет ссылки на StudentID. Попробуйте добавить:
public int StudentID { get; set; }
к классу изображений может быть?
Также наличие ICollection означало бы, что на одном изображении может быть несколько учеников - это правильно? Может быть, это должен быть публичный виртуальный Студенческий Студент {...}
РЕДАКТИРОВАТЬ: Кроме того, я нашел это, со многими ко многим (если это то, что вам нужно):
В вашем методе OnModelCreating ():
modelBuilder.Entity<Student>()
.HasMany(c => c.Images).WithMany(i => i.Students)
.Map(t => t.MapLeftKey("StudentId")
.MapRightKey("ImageID")
.ToTable("StudentImages"));
взято из этой ссылки, которая гласит:
Отношения «многие ко многим» между преподавателем и курсом
юридические лица. Код задает имена таблиц и столбцов для объединения
Таблица. Code First может настроить отношение «многие ко многим» для вас
без этого кода, но если вы не позвоните, вы получите по умолчанию
имена, такие как InstructorInstructorID для столбца InstructorID.
РЕДАКТИРОВАТЬ: Вот код, который я использовал вчера вечером, с моей реализацией кода для первого сайта MVC:
var users = new List<User>
{
new User { UserID = new Guid(), Email = "me@me.com", LastOnline = DateTime.Now, Password = "pword", RegistrationDate = DateTime.Now, SecurityAnswer = "me", SecurityQuestion = "who?", Roles = new List<Role>() },
};
users.ForEach(s => context.Users.Add(s));
context.SaveChanges();
var roles = new List<Role>
{
new Role { RoleID = "Admin", Description = "Administration Users", Users = new List<User>() }
};
roles.ForEach(r => context.Roles.Add(r));
users[0].Roles.Add(roles[0]);
context.SaveChanges();
var userLicense = new List<UserLicense>
{
new UserLicense { AddDateTime = DateTime.Now, LicenseType = "Farmer", Manufacturer = "Motorola", Model = "Droid", PhoneIdentifier = "c0e4223a910f", UserID = users[0].UserID, User = new User() }
};
userLicense[0].User = users[0];
userLicense.ForEach(u => context.UserLicenses.Add(u));
context.SaveChanges();
userLicense[0].User = users[0];
context.SaveChanges();
Обратите внимание, что в каждом созданном элементе я также создаю экземпляр нового ссылочного элемента в родительском объекте.
EDIT:
Хорошо, попробуйте это:
var students = new List<Student> {
new Student { Id = 1, Name = "John", Images = new List<Image>() },
new Student { Id = 2, Name = "Jane", Images = new List<Image>() }
};
students.ForEach(s => context.Students.Add(s));
context.SaveChanges();
var images = new List<Image> {
new Image { Id = 1, Filename = "IMG_4596.JPG", Extension = ".jpg", Students = new List<Student>() },
new Image { Id = 2, Filename = "IMG_4600.JPG", Extension = ".jpg", Students = new List<Student>() }
};
images.ForEach(i => context.Images.Add(i));
students[0].Images.Add(images[0]);
students[1].Images.Add(images[1]);
context.SaveChanges();