2016-03-28 13 views
0
var results = ObjectContext.ExecuteStoreQuery<T>("exec MyStoredProc"); 

MyStoreProcは、常に1列を返します。すべての列が整数です。EF SQLクエリから匿名型を返す方法

この1回限りの使用タイプのデータに対して、クラスまたは構造体を作成したくありません。

クラスを作成せずにこれを行う最もクリーンな方法は何ですか?

+3

"この一回限りの使用タイプのデータ用にクラスまたは構造体を作成したくないのですが、これを行う最もクリーンな方法は何ですか?" *自分のクラス/構造体を作成します:) –

+1

なぜドンタイプを作成したくないのですか?それは時間がかかりません。一時的なものやデモの場合は、本当に速いタイプを作成してください。長期的な解決策であれば、今後の保守性と可読性のための型を間違いなく作成してください。 – kai

+0

@kaiさらに別のDTOモデルオブジェクトを追加すると、ソリューション全体が騒がしくなり、インテリセンスが減り、ダウンロード/ビルドするファイルが増えます。現在のところ、このソリューションは非常に大きく、このメソッドでのみ使用され、再利用されることはありません私はこのメソッドに含まれるすべてを保持しようとしています。 – user3953989

答えて

0

EFでは、ObjectContext.ExecuteStoreQuery()メソッドを使用しているときに、EFマッピングを持つ型以外の型の返却はサポートされていないようです。

私は匿名型のSqlCommandオブジェクトとdatareaderを使用してしまいました。

4

理論的には、渡したサンプル値に基づいて暗黙的に<T>型を検出し、戻すと予想される匿名構造の例を渡す汎用ラッパーメソッドを作成できます。あなたはこのようにそれを呼び出すことができます。

var results = AnonymousQueryWrapper("exec MyStoredProc", new {id = 0, name = "", ...}); 

しかし、私はプライベートクラスを作成することがはるかに負担がなく、非常に明確であると思います。だからあなたが "これを行う最もクリーンな方法は何でしょうか"と尋ねるとき。私は "名前付き型を作成する"と答えなければならない。

関連する問題