实体框架数据库首先生成多对多中间表,其中没有额外的列
Posted
技术标签:
【中文标题】实体框架数据库首先生成多对多中间表,其中没有额外的列【英文标题】:Entity Framework DB First generate many to many intermediate table WITHOUT having extra columns in it 【发布时间】:2017-03-16 01:13:57 【问题描述】:我很清楚,如果我有一个多对多关系,除了中间表中的外键列之外,那么 EF 将只为主表生成实体,在每个表中放置虚拟集合来表示关系。当我有一个包含额外列的多对多关系时,EF 将为中间表生成一个实体,以便访问这些额外的列。我需要知道是否有一种方法可以生成中间表实体,而表中没有任何额外的列。
换句话说:
假设我们有以下关系:Schools-StudentSchool-Students。 如果我知道 SchoolId,如果没有中间表,我应该如何让所有不在该学校学习的学生。 (在只有当前在校学生的集合的对象模型中)。 我在整个画面中缺少什么?
【问题讨论】:
【参考方案1】:我相信,当且仅当多对多关系是双方的总参与时,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));
【讨论】:
以上是关于实体框架数据库首先生成多对多中间表,其中没有额外的列的主要内容,如果未能解决你的问题,请参考以下文章