繁体   English   中英

实体框架数据库首先生成多对多中间表,但其中没有多余的列

[英]Entity Framework DB First generate many to many intermediate table WITHOUT having extra columns in it

对我来说很清楚,如果我有一个多对多的关系,而中间表中没有外键列,那么EF只会为主表生成实体,在每个主表中放置虚拟集合来表示这种关系。 当我与包含多余列的多对多关系时,EF将为中间表生成一个实体,以便提供对这些多余列的访问。 我需要知道有没有一种方法可以生成中间表实体而表中没有任何额外的列。

换一种说法:

假设我们具有以下关系:Schools-StudentSchool-Students。 如果我知道SchoolId,我应该如何在没有中间表格的情况下让所有不在那所学校学习的学生。 (在对象模型中,只有当前在校学习的学生的集合)。 整个图片中我缺少什么?

我相信,当且仅当多对多关系是双方的全面参与时,EF才会保留两个表格。

在这种情况下,SQL:

Select *
From Students
Where StudentId Not IN( Select StudentId
                        From   Schools                    
                        Where  schoolId = x)   

或lambda

var SchoolsRequested = Schools.Where(x=>x.schoolId = x);
var notWantedStudentIds = SchoolsRequested.Select(x=>x.StudentId).ToList();
Students.Where(x=> !notWantedStudents.Contains(x));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM