我有一个带有“作者”表的数据库“Pubs”。我通过拖动“authors”来从数据库中创建了一个dbml文件。
这是“Default.aspx.vb”
Public Class _Default
Inherits System.Web.UI.Page
Dim author As Object
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim db As New PubsContext
Dim authors = From p In dbo.authors _
Select p
GridView1.DataSource = author
GridView1.DataBind()
End Sub
End Class
以下是它的类:“Class1.vb”
Partial Public Class PubsContext
Dim authors As Object
Public Function GetProductsByCategory(ByVal id1 As Integer) As IEnumerable(Of authors)
Return From p In Me.authors _
Where p.au_id = id1 _
Select p
End Function
End Class
错误代码: “类型'对象'的表达式是不可查询的。请确保您没有错过LINQ的程序集引用和/或名称空间导入”。
在引用中已经存在“System.Data.Linq”。我该怎么办?
答案 0 :(得分:3)
这就是问题所在:
Dim authors As Object
那只是一个对象。在此基础上调用Select
,Where
等意味着是什么意思?你甚至在哪里给它一个价值?弄清楚真正的类型应该是什么,确保你给它一个合适的价值,你应该没事。
目前尚不清楚为什么要引入自己的authors
字段,说实话 - 我希望生成的上下文具有类型为Authors
的{{1}}属性或类似的东西。
(我注意到你还试图将Table<Author>
设置为GridView1.DataSource
而不是author
,顺便说一下......你为什么这样做?你期待什么价值? authors
中的author
字段有哪些?)