1

私は、プロパティ設計されていない古いデータ ウェアハウスに取り組んでいます。残念ながら、いくつかの制約により、データベース全体を再設計することはできないため、特定の年の情報を保持する複数のテーブルで作業しています。一度に 3 つのテーブルに対してクエリを実行する必要があります (各年の今日の日付に対して 3 つの異なる年)。実行時まで使用されているテーブルを知らずにこのクエリを作成する方法はありますか? アプリケーションが ASP.NET MVC 3 に移植されているため、Entity Framework でこれを実行しようとしていますが、テーブルが静的な場合にのみ Entity Framework を使用しました。

以下は、私が使用しているテーブル構造の例です。

テーブル:

INFO2008
INFO2009
INFO2010
INFO2011
INFO2012

すべてのテーブルは同じテーブル デザインを使用します。

ID (INT)
FirstName (VARCHAR)
LastName (VARCHAR)
ZipCode (VARCHAR)
Date (DATETIME)

ここで、今日の日付が 2012 年 1 月 1 日の場合、INFO2012 から 2012 年 1 月 1 日、INFO2011 から 2011 年 1 月 1 日、およびINFO2010. 各テーブルには、その年のレコードのリストのみが保持されます。そのため、実行時にテーブル名 (年を含む) を動的に計算する必要があります。

4

1 に答える 1

0

私は以下を使用してこれを達成することができました:

Context.CreateQuery<EntityObject>(String.Format("SELECT VALUE t FROM {0}", "INFO2011")); 

このようにして、INFO2011 を、結果を取得する必要がある現在のテーブル年に切り替えることができます。また、これを使用して、ObjectParameters を SQL ステートメントに動的に追加することもできます。ビューのフィールドにアクセスするために、すべてのエンティティが継承するインターフェイスを作成しました。これにより、ビューで使用しているテーブルがわからない場合でも、インターフェイスを使用してテーブルから値を引き出すことができます。すべて同じデザインを共有しています。

于 2012-04-26T13:46:29.550 に答える