1

動的なwhere句を含むクエリから返された結果をWPFDataGridにバインドしようとしています。

Database.SqlQueryを使用すると、ObservableCollectionを返すLoad()メソッドとLocal()がないようです。したがって、私は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 に答える