2017-01-20 13 views
0

私は "MyEntity"と呼ばれるエンティティを持っています。一般的な型 - エンティティフレームワークの動的テーブル

さて、私のデータベースでは、「MyEntityJan2017」と呼ばれる新しいテーブルが作成され、毎月、翌月には「MyEntityFeb2017」などになります...

通常、私はこのように私のエンティティを返す:

public DbSet<MyEntity> MyEntity{ get; set; } 
「MyEntityJan2017」

これらのテーブルのリポジトリ方法が返さDbSetを使用してLINQのを使用してそれらをクエリとしてはそのようなクラスが存在しないよう

しかし、私はここにこれを行うことはできません。

動的に作成されたテーブルのDbSetを返すにはどうすればよいですか?

私がこれまでに持っていた唯一の解決策は、これらのテーブルに以下のような古風な方法を照会することです。

var resultSet = dataContext.Database.SqlQuery<MyEntity>(sqlQuery, paramList); 
+1

私はストアドプロシージャのために行くでしょう:)トラックからは少し離れていますが、これがEFで実現できることを確かめてください。 –

+0

@ YashveerSingh問題は、すべての機能をStoredProceeduresに移動しなければならないことです。すべてのクエリは既にLINQに存在します。照会することができるストアドプロシージャからテーブル/ dbsetを返す方法はありますか?すなわちDbSet MyTable? – Talon

+1

1つのオプションは、格納されたprocからすべてのデータを返すことです。次に、MyEntityにmaterliazeして、その上にlinqを使用することができます。この方法で、procで動的クエリを作成し、DBReaderとMaterializerを使用してすべてのデータを単一のエンティティに変換し、linqで処理できます。 –

答えて

1

これに対する基本的な答えは、EFでできないことです。 Yashveerが提案されているので、必要なデータを返すためにストアドプロシージャを使用するのが最も良い方法です。

+0

必須。ない。変化する。 [SOの本当の答え](https://www.reddit.com/r/ProgrammerHumor/comments/7852ws/this_is_not_the_answer_i_was_looking_for/) – Birowsky

関連する問題