frontin
frontin

Reputation: 753

LINQ to entity Error: "Unable to create a null constant value of type ''System.Int32[]". Only entity types, enumeration types

I am receiving the error listed when executing a linq query on my RosterSummaryData_Subject_Local entity. I cannot seem to figure out what is wrong or a solution.

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

My LINQ query on my code first entity context:

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)));

Upvotes: 2

Views: 4502

Answers (1)

Rufus L
Rufus L

Reputation: 37020

It sounds like one of your Int32[] types is null. Try adding a check for that before accessing the .Contains methods:

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)));

Alternatively, if it is Ok for them to be null (I assume it isn't, but just in case), you can change the above checks to follow this pattern:

(statsInfo.DemoCatIDsList == null ||
    statsInfo.DemoCatIDsList.Contains(s.fkDemoCommonCategoryID)) &&

Upvotes: 1

Related Questions