Я пытаюсь перевести следующий запрос в структуру сущности:
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 - это простая таблица с subject.ID, subject.Name и Projects_Subjects - это таблица, в которой отражаются отношения «многие ко многим» между субъектами и проектами со столбцами Projects_Subjects.Project_ID и Projects_Subjects.Subject_ID.
Этот запрос прекрасно работает в SQL, так как возвращает все темы, которые еще не связаны с проектом с ID = 2.
Я пытаюсь перевести это в Linq для Entities. Пока что у меня есть:
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 ==, так как он прекрасно работает, если я его уберу. Вопрос: как я могу выполнить эту проверку для коллекции сущностей?