1

我正在尝试将带有动态 where 子句的查询返回的结果绑定到 WPF DataGrid。

使用 Database.SqlQuery 似乎没有 Load() 方法,也没有 Local() 来返回 ObservableCollection。因此,我正在使用 New ObservableCollection(Of Product)(q1)。这是推荐的用法,还是我错过了什么?

使用 DbSet.SqlQuery 我发现根本无法获取数据。这个应该怎么用?

Dim _dbc As New AdventureWorksEntities

''Using DbSet
'Dim q = _dbc.Product
'q.Load()
'Dim r = q.Local
'grd.ItemsSource = r

Const sql = "select * from production.product WHERE name LIKE 'fla%' and ProductNumber LIKE '%0'"
'Using Database.SqlQuery
Dim q1 = _dbc.Database.SqlQuery(Of Product)(sql)
Dim r1 = New ObservableCollection(Of Product)(q1)
grd.ItemsSource = r1

''Using DbSet.SqlQuery
'Dim q2 = _dbc.Product.SqlQuery(sql)
''Dim r2 = ???
''grd.ItemsSource = r2
4

1 回答 1

2

您应该能够通过执行以下操作来实现您正在寻找的东西。

' Load the products
_dbc.Products.SqlQuery(sql).ToList()

' Bind to all loaded products
grd.ItemsSource = _dbc.Products.Local

另请注意, 的结果Database.SqlQuery()永远不会在上下文中跟踪,因此DbSet.SqlQuery()如果您想使用DbSet.Local.

有关DbSet.Local实际包含内容的更多信息,请参阅其文档

于 2012-10-04T22:13:45.383 回答