2012-03-21 23 views
8

Tôi đã có một đoạn mã trên trang asp.net trong tệp mã-đằng sau. Tôi quyết định di chuyển nó vào một chương trình con công khai trong một mô-đun (general_functions.vb). Một khi tôi đã làm điều này, tuy nhiên, mã không còn hoạt động - nó ném một lỗi.LINQ to Entities không nhận ra phương thức System.ObjectCompareObjectEqual

Trên gốc code-behind Tôi thay thế mã ban đầu với một cuộc gọi như vậy:

DeleteResidency(people_id, semester, year) 

Bây giờ trong general_functions.vb của tôi, tôi đã tạo ra một chương trình con công cộng như sau:

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 

Có là mã nhiều hơn nó, nhưng đoạn mã trên là điều ném lỗi. Các lỗi tôi nhận được là:

LINQ to Entities không nhận ra phương pháp 'System.Object CompareObjectEqual (System.Object, System.Object, Boolean)' phương pháp, và phương pháp này không thể được dịch sang một cửa hàng biểu hiện.

Có ai giúp tôi hiểu tại sao điều này xảy ra không?

+2

Loại 'học kỳ' là gì? – Eranga

+0

Tất cả các giá trị được truyền dưới dạng chuỗi. – davemackey

+3

Tôi nghi ngờ có một số loại so sánh nguyên thủy trong điều kiện của bạn. – Eranga

Trả lời

10

Loại rõ ràng các tham số của bạn trong định nghĩa của RoutResidency Sub Routine. Điều này lá ít hơn cho trình biên dịch để suy ra và ngăn chặn các loại lỗi.

Các vấn đề liên quan