2017-03-16 14 views
0

我很清楚,如果我有一個多對多的關係,而不是中間表中的外鍵列,那麼EF將生成實體只有在主表中放置虛擬集合才能表示關係。當我有多對多的關係包含額外的列時,EF會爲中間表生成一個實體,以便訪問這些額外的列。我需要知道有沒有辦法讓中間表實體的生成沒有任何額外的列在表中。實體框架數據庫首先生成許多到多箇中間表,而沒有額外的列

換句話說:

假設我們有如下關係:學校 - StudentSchool-學生。 如果我知道學校,我該如何讓沒有中間表的所有不在該學校學習的學生。 (在只有當前正在學校學習的學生集合的對象模型中)。 我在整張照片中錯過了什麼?

回答

1

我相信只要多對多關係是來自雙方的總參與度,EF仍將保留兩張表格。

在這種情況下, SQL:

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

或λ

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