我想翻譯下面的查詢到實體框架:實體框架相當於SQL「IS NULL」
SELECT Subjects.Name
FROM Subjects LEFT OUTER JOIN
Projects_Subjects ON Subjects.ID = Projects_Subjects.Section_ID
WHERE (Projects_Subjects.Project_ID IS NULL) OR
(Projects_Subjects.Project_ID <> 2)
哪裏科目是subject.ID一個簡單的表格,subject.Name和Projects_Subjects是一個表通過Projects_Subjects.Project_ID和Projects_Subjects.Subject_ID列實現主題和項目之間的多對多關係。
此查詢工作正常使用SQL,它返回一個尚未與該項目相關的ID爲所有科目= 2
我想這個轉換爲LINQ到實體。到目前爲止,我有:
db.Subjects.Where(s => s.Projects == null || !s.Projects.Select(p => p.ID).Contains(ProjectID))
,編譯器是高興盡可能語法去,但在運行時我得到以下錯誤:
'System.Data.Objects.DataClasses.EntityCollection`1'. Only primitive types (such as Int32, String, and Guid) and entity types are supported.
沒有其他信息真的。據我可以告訴它不喜歡s.Projects == null位,因爲它工作正常,如果我拿出來。問題是:如何在實體集合上執行該檢查?
聽起來像很多的問題,空值和實體框架:http://stackoverflow.com/questions/682429/how-can-i-query-for-null-values-in-entity-framework http://stackoverflow.com/questions/1126133/linq-to-sql-nullable-types-in-where-clause http://stackoverflow.com/questions/2411894/handling-null-values-in-where-子句使用LINQ到SQL http://stackoverflow.com/questions/586097/compare-nullable-types-in-linq-to-sql http://stackoverflow.com/questions/2097539/linq- where-column-null-reference-not-same-column-null –
沒關係,我是個白癡。沒有必要檢查空值,因爲這是默認狀態......查詢工作正常,但沒有s.Projects == null位。 –