表 Student、列:
id int primary key,
name varchar(20) not null
表クラス、列:
id int primary key,
name varchar(20) not null
学生とクラスは多対多であるため、テーブル StudentClass があります。このテーブルでは、学生がどのクラスを受講し、どの学生が 1 つのクラスに含まれているかがわかります。
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)
{
// ....
}
}
}