(USING ENTITY FRAMEWORK 4.3 CODE ZUERST)
Wie können Entitäten hinzugefügt werden, wenn die Join-Tabelle zusätzliche Daten (Payload) enthält?
Der Code ist unten. Ich möchte tatsächlich in der Lage sein, etwas zu tun wie:
var instanceStudent = new Student2(){...};
var instanceCourse = new Course2(){...};
instanceStudent.Add(instanceCourse);
db.SaveChanges();
... oder etwas ähnliches, solange es funktioniert. Im Grunde genommen bin ich zur Zeit ein Neuling bei Entity Framework und möchte wissen, wie man eine Entity innerhalb einer anderen Entity hinzufügt, während die Junction-Tabelle Daten enthält (ich weiß, dass es einfach ist, leere Junction-Tabelle, aber ich ' (ratlos)
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" };
}
}
Ist Enrollment2.Grade ein Pflichtfeld? –
das ist kein wirkliches Projekt, nur ich versuche EF Code zuerst, aber ich bin ratlos ... wenn "erforderlich" wie in Validierung Anforderung? Nein. –
Da ist es nicht nullable. –