表学生,专栏:
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(使用此表来存储额外的属性,这些属性不属于学生而不属于类,它们属于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)
{
// ....
}
}
}
答案 0 :(得分:0)
http://codebetter.com/jeremymiller/2007/02/01/composite-keys-are-evil/
通过上述链接精神充沛,使用代理键替换复合键。比一切变得更容易。