我正在尝试查询我的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
如果有人能告诉我如何让第二版运行并解释问题所在,我真的很感激!
答案 0 :(得分: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
它将起作用。