Ich versuche, einen Test in EF, erstellen eine viele zu viele Beziehung, weil ich immer eins zu eins oder eins zu vielen zuordnen, habe ich ein Beispiel im Internet bekommen für Versuch, arbeitet das Beispiel für Einsatz Register, aber ich kann Register nicht meine Klassen lesenMapping viele zu viele Beziehung in Entität Rahmencode zuerst
Hier ist, weiß ich nicht, was HashSet
ist, dass ich diesen Code auf der Website erhalten
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ICollection<Course> CoursesAttending { get; set; }
public Person()
{
CoursesAttending = new HashSet<Course>();
}
}
public class Course
{
public int CourseId { get; set; }
public string Title { get; set; }
public ICollection<Person> Students { get; set; }
public Course()
{
Students = new HashSet<Person>();
}
}
Hier ist mein Kontext
public class SchoolContext : DbContext
{
public DbSet<Course> Courses { get; set; }
public DbSet<Person> People { get; set; }
public SchoolContext()
: base("MyDb")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Course>().
HasMany(c => c.Students).
WithMany(p => p.CoursesAttending).
Map(
m =>
{
m.MapLeftKey("CourseId");
m.MapRightKey("PersonId");
m.ToTable("PersonCourses");
});
}
}
Wenn ich Register einzufügen ist rechts
static void Main(string[] args)
{
using (SchoolContext db = new SchoolContext())
{
Course math = new Course();
Course history = new Course();
Course biology = new Course();
math.Title = "Math";
history.Title = "History";
biology.Title = "Biology";
db.Courses.Add(math);
db.Courses.Add(history);
db.Courses.Add(biology);
Person john = new Person();
john.FirstName = "John";
john.LastName = "Paul";
john.CoursesAttending.Add(history);
john.CoursesAttending.Add(biology);
db.People.Add(john);
db.SaveChanges();
}
}
Aber wenn ich wählen Sie Register zum Inhalt zeigen versuchen, arbeiten nicht, drucken Sie es einfach nichts
static void Main(string[] args)
{
using (SchoolContext db = new SchoolContext())
{
Pearson p = db.Peasons.First();
Console.WriteLine(p.CoursesAttending.First().Title);
}
}
ich in der Datenbank überprüfen hatte, Register vorhanden sind, Was ist das Problem?
Bitte lehren Sie mir, wie in vielen zu vielen Beziehung mit Code zuerst zu machen.
Wenn Sie '.Add()' auf Navigationseigenschaften in einer Viele-zu-viele-Beziehung verwenden, aktualisiert EF automatisch eine entsprechende gemeinsame Tabelle? – Celdor
@Celdor EF aktualisiert die entsprechende Join-Tabelle natürlich. – IFink