2012-03-21 4 views
8

코드 숨김 파일에서 asp.net 페이지에 코드 세그먼트가 있습니다. 모듈 (general_functions.vb)의 공용 서브 루틴으로 이동하기로 결정했습니다. 그러나 일단이 작업을 수행하면 코드가 더 이상 작동하지 않으며 오류가 발생합니다. 이LINQ to Entities가 메서드를 인식하지 못합니다. System.ObjectCompareObjectEqual

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 

다음과 같은

DeleteResidency(people_id, semester, year) 

지금 내 general_functions.vb에서 나는 공공 서브 루틴을 만든 : 원본에

코드 숨김 내가 같은 호출로 원래의 코드를 교체 그보다 더 많은 코드이지만 위의 코드는 오류를 throw하는 코드입니다. 내가 오류는 다음과 같습니다 엔티티에

LINQ는 방법 '은 System.Object CompareObjectEqual (은 System.Object,은 System.Object, 부울)'방법 및 를 인식하지 못하는 경우이 방법이 가게로 번역 될 수 없습니다 표현.

왜 이런 일이 발생하는지 이해할 수 있습니까?

+2

'학기'의 유형은 무엇입니까? – Eranga

+0

모든 값은 문자열로 캐스트됩니다. – davemackey

+3

나는 당신의 조건에 비 기본 유형 비교가 있다고 의심합니다. – Eranga

답변

10

명시 적으로 DeleteResidency 하위 루틴의 정의에 매개 변수를 입력하십시오. 이렇게하면 컴파일러가 이러한 유형의 오류를 추론하고 방지 할 수 있습니다.

관련 문제