作为示例,我使用了codeproject上这篇文章中的代码:http://www.codeproject.com/Articles/234606/Creating-a-Many-To-Many-Mapping-Using-Code-First
我试图在我的代码中做类似的事情,但我还想要一个数量属性:
1. 一个课程可以有多个人 2. 一个人可以有多个课程 3. 每个人可以选择每门课程的数量。(我知道选择同一门课程两次没有意义,但这只是一个例子,或者将课程替换为汉堡的类型:-))
我想我必须在PersonCourses表中添加一个名为Quantity的列,但我不知道如何在Code First中实现。
代码:
1. 一个课程可以有多个人 2. 一个人可以有多个课程 3. 每个人可以选择每门课程的数量。(我知道选择同一门课程两次没有意义,但这只是一个例子,或者将课程替换为汉堡的类型:-))
我想我必须在PersonCourses表中添加一个名为Quantity的列,但我不知道如何在Code First中实现。
代码:
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>();
}
}
public class SchoolContext : DbContext
{
public DbSet<Course> Courses { get; set; }
public DbSet<Person> People { get; set; }
public SchoolContext()
: base("MyDb")
{
}
}
背景:
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");
});
}
}