EF4.1 CodeFirst:添加字段以连接表

Ing*_*mar 4 ef-code-first entity-framework-4.1

我使用EF 4.1 RC和CodeFirst/POCO按代码构建我的数据库.

想象一下,像师生一样有多对多的关系(一个教师可以有很多学生,一个学生可能有很多老师).因此,我有两个POCO:(1)教师和(2)学生.

当EF创建相应的表格时,您将最终得到三个表格:(1)教师,(2)学生和(3)额外的联接表格.连接表恰好包含两个字段:Teacher_ID和Student_ID.

我想知道我是否有机会在联接表中添加额外的字段,例如"成绩"(某位老师给某位老师的成绩)?

目前我不知道如何只用两个POCO来实现这一点.

所以我想我能做的就是手动创建第三个POCO(用于连接表),对吗?这肯定会奏效,但后来我失去了很好的导航属性,如oneTeacher.Students.First()等.这是我仍在寻找另一种方式的主要原因.

Yak*_*ych 5

这是正确的,并且不仅适用于Code-first.如果您的加入表中有额外的字段,您将把它映射为实体.反之亦然,如果你想在你的加入表的额外字段,你需要创建一个新的实体,具有零或-一对多或一对一许多导航属性到TeacherStudent实体.在任何情况下,你失去了访问的舒适性Teacher.StudentsStudent.Teachers和必须通过中间实体中去.

或者,你可以考虑一下不同的造型DB结构和提取额外的信息进入TeacherStudent或第四实体.但这完全取决于您的情况.