如何为这些表定义实体/模型?

时间:2012-05-03 13:18:46

标签: entity-framework

表学生,专栏:


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)
    {
      // ....
    }
  }
}

1 个答案:

答案 0 :(得分:0)

http://codebetter.com/jeremymiller/2007/02/01/composite-keys-are-evil/

通过上述链接精神充沛,使用代理键替换复合键。比一切变得更容易。

相关问题