2010-11-14 100 views
0

我有3個實體教師主題學年SchoolYearSubject。 SchoolYear,Teacher and Subject have many SchoolYearSubject。 SchoolYear應該有許多主題,每個主題都有一位教師,所以我使用SchoolYearSubject來存儲這種關係。C#實體框架:減去實體

class Teacher { ICollection<SchoolYearSubject> } 
class Subject { ICollection<SchoolYearSubject> } 
class SchoolYear { ICollection<SchoolYearSubject> } 
class SchoolYearSubject { Teacher, Subject, SchoolYear } 

例如: 我們有學年2010年,三個科SA,SB和SC和3位老師TA,TB,TC。

2010年的學年有兩門學科sA和sC,分別是tA和tC,所以它有2個SchoolYearSubject實體,一個參照sA科目和tA老師,一個參加sC科目和tC老師。

我該如何爲每個SchoolYear獲得那些尚未在該SchoolYear中的科目,而不儲存已經在SchoolYear中的科目的當地信息?

我嘗試使用

SchoolYear SchoolYear = (SchoolYear 2010); 
Db.Subjects.Except(SchoolYear.SchoolYearSubjects.Select(schoolYearSubject => schoolYearSubject.Subject)).ToList() 

但它不工作,導致NotSupportedException異常「無法創建類型‘SchoolYearSubject’的恆定值,只有原始類型('如的Int32,String和Guid')在這方面得到了支持。「如預期。

回答

1

我假設你的Subject類有一個ID?您可以創建一個您不想加載和使用的ID的數組:Contains

var subjectIDsInSchoolYear = SchoolYear.Subjects.Select(s => s.ID).ToArray(); 

var query = from s in Db.Subjects 
      where !subjectIDsInSchoolYear.Contains(s.ID) 
      select s; 

var result = query.ToList();