表学生,列:
id int primary key,
name varchar(20) not null
表类,列:
id int primary key,
name varchar(20) not null
学生和班级是多对多的,所以我们有表StudentClass,在这个表中,我们会知道一个学生上哪些课,一个班级有哪些学生。
StudentId int FK,
ClassId int FK,
接下来,表StudentClassProperty(使用该表存储额外的属性,这些属性不属于student也不属于class,它们属于class+student),列:
StudentId,
ClassId
Name,
Value,
表 课程
id,
name
和表StudentClassCourse(不同的班级,有不同的课程,但所有课程都是可选的)
StudentId,
ClassId,
CourseId
据我所知,模型可以是:
class Student
{
int Id,
string Name,
ICollection Classes,
}
class Class
{
int Id,
string name,
ICollection Students,
}
class Course
{
int Id,
string Name
}
in DbContext class, defines the many-to-many relationship for Class and Student
_db.Entry(
.HasMany(a => a.Classes)
.WithMany(b => b.Students)
.Map (m => m.MapLeftKey("StudentId").MapRightKey("ClassId").ToTable("StudentClass"));
但是如何定义表 StudentCLassPropery 和 StudentClassCourse 的关系?我想使用这样的实体:
foreach(Student s in _db.Students)
{
foreach(Class c in s.Classes)
{
foreach(Course course in c.Coures)
{
// ....
}
}
}