2014-11-21 3 views
1

Я получаю ошибку, указанную при выполнении запроса linq в моем объекте RosterSummaryData_Subject_Local. Я не могу понять, что не так или решение.LINQ to entity Ошибка: «Невозможно создать нулевое постоянное значение типа« System.Int32 [] ». Только типы объектов, типы перечисления

Unable to create a null constant value of type 'System.Int32[]'. Only entity types, enumeration types or primitive types are supported in this context.

Мой LINQ запрос на мой код первого контекста объекта:

var subjLocal = customerContext.RosterSummaryData_Subject_Local.Where(s => 
    (s.fkRosterSetID == 0) && 
    (statsInfo.TestInstanceIDsList.Contains(s.fkTestInstanceID)) && 
    (s.fkTestTypeID == statsInfo.TestTypeID) && 
    (statsInfo.SchoolYearIDsList.Contains(s.fkSchoolYearID)) && 
    (s.fkRosterTypeID == 1) && 
    (s.fkSchoolID == 0) && 
    (s.fkDepartmentID == 1) && 
    (s.fkCourseID == 1) && 
    (s.fkPeriodID == 1) && 
    (statsInfo.DemoCatIDsList.Contains(s.fkDemoCommonCategoryID)) && 
    (statsInfo.DemoCodeIDsList.Contains(s.fkDemoCommonCodeID)) && 
    (statsInfo.TestSubjectIDsList.Contains(s.fkTest_SubjectID))); 
+2

Вы уверены, что все ваши списки не являются нулевыми? (т. е. 'TestInstanceIDsList') –

+0

@KirkWoll о, это неудобно. Спасибо за это место. Один из списков был нулевым, и я думал, что они прошли правильно. Решила проблему, спасибо – frontin

+0

Сообщения об ошибках EF обычно оставляют желать лучшего. :) –

ответ

1

Это звучит, как один из ваших Int32[] типов null. Попробуйте добавить проверку, что перед обращением к .Contains методов:

var subjLocal = customerContext.RosterSummaryData_Subject_Local.Where(s => 
    (s.fkRosterSetID == 0) && 
    (statsInfo.TestInstanceIDsList != null && 
     statsInfo.TestInstanceIDsList.Contains(s.fkTestInstanceID)) && 
    (s.fkTestTypeID == statsInfo.TestTypeID) && 
    (statsInfo.SchoolYearIDsList != null && 
     statsInfo.SchoolYearIDsList.Contains(s.fkSchoolYearID)) && 
    (s.fkRosterTypeID == 1) && 
    (s.fkSchoolID == 0) && 
    (s.fkDepartmentID == 1) && 
    (s.fkCourseID == 1) && 
    (s.fkPeriodID == 1) && 
    (statsInfo.DemoCatIDsList != null && 
     statsInfo.DemoCatIDsList.Contains(s.fkDemoCommonCategoryID)) && 
    (statsInfo.DemoCodeIDsList != null && 
     statsInfo.DemoCodeIDsList.Contains(s.fkDemoCommonCodeID)) && 
    (statsInfo.TestSubjectIDsList != null && 
     statsInfo.TestSubjectIDsList.Contains(s.fkTest_SubjectID))); 

В качестве альтернативы, если это нормально для них, чтобы быть нулевыми (я предполагаю, что это не так, но только в том случае), вы можете изменить вышеуказанные проверки чтобы следовать этому шаблону:

(statsInfo.DemoCatIDsList == null || 
    statsInfo.DemoCatIDsList.Contains(s.fkDemoCommonCategoryID)) && 
Смежные вопросы

 Смежные вопросы