1
(使用實體框架4.3代碼優先)
如何在連接表有額外數據(有效載荷)時添加實體?
代碼如下。我想實際上能夠做到這樣的事情:
var instanceStudent = new Student2(){...};
var instanceCourse = new Course2(){...};
instanceStudent.Add(instanceCourse);
db.SaveChanges();
......或類似的東西,只要它工作。基本上,我目前是Entity Framework的noob,我希望能夠知道如何在另一個實體中添加實體,而Junction表中有數據(我知道在空交界表上很容易, m難倒了)
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" };
}
}
是Enrollment2.Grade必填字段? – 2012-04-01 04:00:57
這不是一個真實世界的項目,只是我嘗試EF代碼第一,但我很難過...如果「需要」在驗證要求?沒有。 – 2012-04-01 04:04:16
因爲它不是可以空的。 – 2012-04-01 04:06:14