2017-01-06 4 views
6

私は異なる名前のテーブルがいくつかありますが、構造はまったく同じです(日付、時刻、値)。私ができるようにしたいのは、私のプログラム(C#またはLINQ/LINQPad)がこれらのテーブルを実行して特定の行を照会するようにして、すべてが正しく更新されていることを確認できるようにすることです。これは実行可能ですか?テーブル名のリストが文字列として与えられていると、一度に複数のテーブルをどのように照会しますか?

今までの私の思考の訓練はこれでした。各テーブル名が異なるクラスを与えることを知っているので、私は総じてテーブルから値を取得しようとしています。

DataContext dc = new DataContext(); 
var myTable = (ITable)dc.GetType().GetProperty("Table").GetValue(dc, null); 

私はこのテーブルから同様の方法で列を取得しようとしています。私は見ていたとき

foreach(var e in myTable) 
{ 
    double myValue = (double)e.GetType().GetProperty("Value").GetValue(e, null); 
} 

だからe.GetTypeのすべてのプロパティは、()、私はそれがコンテキストだったそのうちの一つ2を、持っていた気づいたので、私はそこに探検に行った:ただし、以下のエラーを投げています。しかし、次のレイヤーダウンは実際のデータがループから出てこないメタデータの終わりのようです。私は正しい方向に向かっていますか?この障害を乗り越えれば、リストを作成してその結果を得ることは容易です。どんな助けもありがとう。ありがとう。

+0

「foos.Select(f => new CommonModel {Source = 'foos'、X = fX、Y = fY})のようなものです。 X = bX、Y = bY}) '? –

答えて

1

あなたは ObjectContextあなたがそうEntityKey してオブジェクトを取得することができますGetObjectByKeyと呼ばれる方法があり、主キー(デシベルコンテキスト内のEntityKey)により多くのテーブルを照会する必要がある場合は、あなただけのEntityKeyを構築する必要があります。 MSDN articleによると、それは

DataContext dc = new DataContext(); 
EntityKey key = new EntityKey("DataContext.Table","Id", 123); 
dynamic entity = dc.GetObjectByKey(key); 

あなたは同じ構造を有し、インタフェースにあなたのオブジェクトをキャスト、または単にdynamicを使用するすべてのテーブル(entites)のための共通であるインターフェイスを作成することができ、非常に単純です。

関連する問題