实体框架可以在没有交集对象的情况下处理多对多关系吗?

Sha*_*ica 10 c# entity-framework ef-database-first entity-framework-5

使用数据库第一个模型:假设我们有经典的表Student,CourseStudentCourse(后者显然有FKS到StudentCourse).

如果将此模型导入EF,您将获得为每个模型生成的对象.在StudentCourse班将各自拥有的集合StudentCourses,从中你需要跳到另一个关系去的CourseStudent分别.

我希望以这样的方式生成代码,使得底层交集表是不可见的,即Student具有集合Courses,并且Course具有集合Students.我已经在其他ORM软件(特别是TopLink)中看到了这一点.可以在EF中完成吗?

Ric*_*ing 10

根据本教程,如果您的StudentCourse表只包含外键列,您将获得所需的行为.如果它包含任何其他列,则EF将生成表示连接的中间实体.

在这种情况下,从StudentCourse表中删除代理键并将其替换为复合主键应该可行.

  • 基本上,只要你在关系上有一个额外的"属性",你就会在EF中获得额外的实体.您只需将代理键视为"属性"即可.硬币的另一面是,如果你想要属性,这个额外的实体是必须的.(将Employee视为JobTitle关系,但〜关系具有"StartedOnDate"属性.因此,您必须拥有此额外实体. (2认同)