我在代码隐藏文件的asp.net页面上有一段代码段。我决定将它移动到模块中的公共子例程(general_functions.vb)。但是,一旦我这样做了,代码就不再起作用 - 它会引发错误。
在原始代码隐藏中,我用这样的调用替换了原始代码:
DeleteResidency(people_id, semester, year)
现在在我的general_functions.vb中,我创建了一个公共子例程,如下所示:
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
它有更多的代码,但上面的代码会引发错误。我得到的错误是:
LINQ to Entities无法识别方法'System.Object CompareObjectEqual(System.Object,System.Object,Boolean)'方法,和 此方法无法转换为商店表达式。
任何人都可以帮助我理解为什么会这样吗?
答案 0 :(得分:10)
在DeleteResidency Sub Routine的定义中显式输入您的参数。这样就不会让编译器推断并防止出现这些类型的错误。