0

我正在尝试查询我的 EF 模型(使用 ASP.NET MVC WebApi),但只有第一个版本(使用 SingleOrDefault)有效,第二个版本无效,我无法理解它!

在职的:

Public Overloads Shared Function GetById(id As Integer) As MEDIA
    Dim db As New EFEntities()
    Dim r As New MEDIA()
    r = db.MEDIA.SingleOrDefault(Function(p) p.id = id)

    Return r
End Function

不工作:

错误:无法将“System.Data.Objects.ObjectQuery`1[Data.MEDIA]”类型的对象转换为“Data.MEDIA”类型

Public Overloads Shared Function GetById(id As Integer) As MEDIA
    Dim db As New EFEntities()
    r = From media In db.MEDIA
            Where media.id= id _
            Select media

    Return r
End Function        

如果有人能告诉我如何运行第二个版本并解释问题所在,我将不胜感激!

4

1 回答 1

0

在您的第一个示例中,该行:

r = db.MEDIA.SingleOrDefault(Function(p) p.id = id)

初始化单个 MEDIA 对象。

但是,在您的第二个示例中,该行:

r = From media In db.MEDIA
        Where media.id= id _
        Select media

初始化 MEDIA 对象的集合 - 不兼容的类型。

如果您将第二个示例中的返回表达式更改为:

Return r.SingleOrDefault()

并坚持它Dim的初始化r工作。

于 2012-08-09T20:18:49.680 回答