Posiadałem segment kodu na stronie asp.net w pliku z kodem. Postanowiłem przenieść go do publicznego podprogramu w module (general_functions.vb). Kiedy już to zrobiłem, kod przestał działać - powoduje błąd.LINQ to Entities nie rozpoznaje metody System.ObjectCompareObjectEqual
Z oryginalnego kodu z opóźnieniem Wymieniłem oryginalny kod z połączenia tak:
DeleteResidency(people_id, semester, year)
Teraz w moim general_functions.vb stworzyłem publicznego podprogram jak następuje:
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
Nie jest więcej kodu niż to, ale powyższy kod jest tym, co rzuca błąd. Błąd pojawia się:
LINQ do podmiotów nie rozpoznaje metoda „System.Object CompareObjectEqual (System.Object, System.Object, Boolean)” metoda i metoda ta nie może być tłumaczone do sklepu wyrażenie.
Czy ktoś może mi pomóc zrozumieć, dlaczego tak się dzieje?
Jaki jest typ "semestru"? – Eranga
Wszystkie wartości są rzutowane jako ciągi. – davemackey
Podejrzewam, że istnieje pewne nietypowe porównanie typów w waszych warunkach. – Eranga