(ИСПОЛЬЗОВАНИЕ СТАТИСТИКИ ОБЩЕГО ПОЛЬЗОВАНИЯ 4.3 КОД ПЕРВЫЙ)
Как добавить объекты, когда в таблице соединений есть дополнительные данные (полезная нагрузка)?
Код приведен ниже. Я хочу на самом деле сделать что-то вроде:
var instanceStudent = new Student2(){...};
var instanceCourse = new Course2(){...};
instanceStudent.Add(instanceCourse);
db.SaveChanges();
... или что-нибудь в этом дупле, если это работает. В принципе, я в настоящее время является noob в Entity Framework, и я хочу знать, как добавить Entity в другой Entity, в то время как таблица Junction имеет данные в нем (я знаю, что это легко на пустой соединительной таблице, м озадачен на этом)
public class Student2
{
[Key]
public virtual int StudentId { get; set; }
public virtual string StudentName { get; set; }
public virtual ICollection<Enrollment2> Enrollments { get; set; }
}
public class Course2
{
[Key]
public virtual int CourseId { get; set; }
public virtual string CourseName { get; set; }
public virtual ICollection<Enrollment2> Enrollments { get; set; }
}
public class Enrollment2
{
public virtual int StudentId { get; set; }
public virtual int CourseId { get; set; }
public virtual string Grade { get; set; }
public virtual Student2 Student { get; set; }
public virtual Course2 Course { get; set; }
}
public class ManyMany2 : DbContext, IContext
{
public DbSet<Student2> Students { get; set; }
public DbSet<Course2> Courses { get; set; }
public DbSet<Enrollment2> Enrollments { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student2>()
.HasKey(student => student.StudentId);
modelBuilder.Entity<Course2>()
.HasKey(course => course.CourseId);
modelBuilder.Entity<Enrollment2>()
.HasKey(enrollment => new { enrollment.StudentId, enrollment.CourseId });
modelBuilder.Entity<Student2>()
.HasMany(student => student.Enrollments)
.WithRequired()
.HasForeignKey(enrollment => enrollment.StudentId);
modelBuilder.Entity<Course2>()
.HasMany(course => course.Enrollments)
.WithRequired()
.HasForeignKey(enrollment => enrollment.CourseId);
}
public void Run()
{
Database.SetInitializer(new DropCreateDatabaseAlways<ManyMany2>());
var c1 = new Course2() { CourseName = "Spanish" };
var c2 = new Course2() { CourseName = "Science" };
var c3 = new Course2() { CourseName = "History" };
var s1 = new Student2() { StudentName = "JC" };
var s2 = new Student2() { StudentName = "Joe" };
var s3 = new Student2() { StudentName = "Jill" };
}
}
Is Enrollment2.Grade обязательное поле? –
это не реальный проект, только я пытаюсь использовать EF Code First, но я в тупике ... если «требуется», как в случае проверки? нет. –
Как и в этом случае не может быть NULL. –