データベース、テーブル、フィールドを選択して、エンジニアがデータベースに対して単純な単一のテーブル/ビュー クエリを実行できるようにするアプリケーションを開発しています。
動的 LINQ ライブラリ サンプルを使用して、実行時に Select、Where、および Order by 句を動的に選択する方法を理解しましたが、テーブルの選択を割り当てる方法について行き詰まっています。
実行時に「from」テーブルを動的に選択する方法を提供する方法はありますか?また、具体的な例を提供したり、持っている人の方向性を教えてもらえますか?
いつもありがとうございます。
編集
したがって、どちらの答えも同じ一般的な考えを言っているようです。C# を VB に変換して動作させようとしています。
最初の答えはに変換されます
NotInheritable Class DataContextExtensions
Private Sub New()
End Sub
<System.Runtime.CompilerServices.Extension> _
Public Shared Function GetTableByName(context As DataContext, tableName As String) As ITable
If context Is Nothing Then
Throw New ArgumentNullException("context")
End If
If tableName Is Nothing Then
Throw New ArgumentNullException("tableName")
End If
Return DirectCast(context.[GetType]().GetProperty(tableName).GetValue(context, Nothing), ITable)
End Function
End Class
しかし、拡張メソッドはモジュールでのみ定義できるというエラーが表示されます。しかし、モジュールタグでラップすると、同じエラーが発生します。
そのため、モジュールタグでラップし、クラスタグを削除してコンパイルしました。また、最後の行を引き出して、それを実行できるようにする基本メソッドに直接押し込むこともできますが、空に戻っているようです。結果を列挙しようとすると、何もありません。これが私のコードの問題なのか新しいコードの問題なのかわからないので、さらにテストします。
2 番目の例を変換したものを次に示します。これらを機能させることができるかどうかを試してみましょう。いくつかのテストの後、質問または結果を返信します。
'get the table from a type (which corresponds to a table in your context)
Dim dataContextNamespace = "My.DataContext.Namespace"
Dim type = Type.[GetType](dataContextNamespace + tableName)
Dim table = dc.GetTable(type
'add where clauses from a list of them
For Each whereClause As String In whereClauses
table = table.Where(whereClause)
Next
'generate the select clause from a list of columns
Dim query = table.[Select]([String].Format("new({0})"), [String].Join(",", selectColumns))
助けてくれてありがとう。BBL