Tenía un segmento de código en una página asp.net en el archivo de código subyacente. Decidí moverlo a una subrutina pública en un módulo (general_functions.vb). Una vez que hice esto, sin embargo, el código ya no funciona, arroja un error.LINQ to Entities no reconoce el método System.ObjectCompareObjectEqual
En el original de código subyacente que sustituyen el código original con una llamada de este modo:
DeleteResidency(people_id, semester, year)
Ahora en mi general_functions.vb creé una subrutina pública como sigue:
Public Sub DeleteResidency(delpeople_id, delsemester, delyear)
Using dbContext as pbu_housingEntities = New pbu_housingEntities
Dim remove_selection = (From p in dbContext.Residents _
Where p.people_code_id = delpeople_id _
Where p.year = delyear _
Where p.semester = delsemester _
Order By p.id Descending _
Select p).FirstOrDefault
End Using
End Sub
Hay es más código que eso, pero el código anterior es lo que arroja el error. El error que consigo es:
LINQ a Entidades no reconoce el método 'System.Object CompareObjectEqual (System.Object, System.Object, Boolean)' método y este método no se puede traducir en una tienda expresión.
¿Alguien me puede ayudar a entender por qué ocurre esto?
¿Cuál es el tipo de 'semestre'? – Eranga
Todos los valores se emiten como cadenas. – davemackey
Sospecho que hay alguna comparación de tipo no primitivo en sus condiciones. – Eranga