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

时间:2012-03-21 00:30:38

标签: asp.net vb.net entity-framework entity-framework-4

我在代码隐藏文件的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)'方法,和   此方法无法转换为商店表达式。

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

1 个答案:

答案 0 :(得分:10)

在DeleteResidency Sub Routine的定义中显式输入您的参数。这样就不会让编译器推断并防止出现这些类型的错误。