LINQ to Entities无法识别方法System.ObjectCompareObjectEqual

Dav*_*key 8 vb.net asp.net entity-framework entity-framework-4

我在代码隐藏文件中的asp.net页面上有一个代码段.我决定将它移动到模块中的公共子例程(general_functions.vb).但是,一旦我这样做了,代码就不再起作用 - 它会引发错误.

在原始的代码隐藏中,我用这样的调用替换了原始代码:

DeleteResidency(people_id, semester, year)
Run Code Online (Sandbox Code Playgroud)

现在在我的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
Run Code Online (Sandbox Code Playgroud)

它有更多的代码,但上面的代码抛出了错误.我得到的错误是:

LINQ to Entities无法识别方法'System.Object CompareObjectEqual(System.Object,System.Object,Boolean)'方法,并且此方法无法转换为商店表达式.

任何人都可以帮助我理解为什么会这样吗?

N0A*_*ias 10

在DeleteResidency Sub Routine的定义中显式键入您的参数.这使编译器更少地推断并防止这些类型的错误.