0

現在、EF と MVC を使用してカスタム レポート ビルダーを構築しています。クエリ ビルダーが SQL を構築し、dbSet.SqlQuery() を使用してデータベースに対してこのクエリを実行できます。

ただし、ユーザーは、返されるフィールドを、場合によっては別のテーブルから選択できます。

したがって、結果を返す「タイプ」がわかりません。「Customers」テーブルのフィールドのみを選択すると、「Customers」のリストを簡単に返すことができます。

これが理にかなっていることを願っています。ここで誰かが私に何か指針を与えることができますか?

4

1 に答える 1

0

うーん...完璧な解決策を見つけるかどうかはわかりません。問題は、実行時に列を定義する必要があることです。もともと匿名型を使おうと思っていたのですが、メソッドシグネチャに匿名型を使うことはできません。 これは、デニスによって提案された動的オブジェクトに関する記事ですが、それをあなたのアイデアと結び付けることは私の頭の中にあります。簡単に言えば、簡単な答えはないと思います。

これは、DBContextに対して一般的なクエリを実行する方法についてこのMSDNArticalを見て作成された例です。それを使用できるかもしれませんが、データ型を保持することはできません(おそらくこれはレポートにとって重要ではありませんか?):

using (var context = new BloggingContext())
{
    //Here blogNames will be a List<string[]>
    var blogNames = context.Database.SqlQuery<string[]>(
                       "SELECT Name, YourProperty FROM dbo.Blogs").ToList();
}
于 2013-01-16T13:09:02.240 に答える