2011-02-07 11 views
1

私は自分のレポートを作成するためのWinformsアプリケーションを提供しています。最もシンプルな方法で、暗号化されデータベースに保存されるクエリを設計します。実行時にユーザー生成SQLを介してデータを表示

今私たちに来てWeb経由でこれらのレポートを表示する機能。

これを処理する最善の方法は何ですか?理想的には私はMVCを使いたいと思いますが、モデルやビューモデルはありません。なぜなら、これらのクエリはアプリケーション全体のテーブルのデータを返すことができますし、propetiesなどをハードコードすることはできないからです。

私はtradtional ASP.Netは、このシナリオでは、パフォーマンスが向上する可能性がある場合、すなわち/ SQLを実行したDataTableにそれを置くだろうが、コミュニティからのいくつかの考えを得るために期待していました。

答えて

1

同様の状況では、クライアント側でDataTables.netとASP.NET MVCを使用しました。 DataTables.netに必要なJSON形式のデータを返すDataSetの拡張メソッドがあります。それぞれの列を説明するhtmlの表/ theadスタブが必要ですが、SQLクエリーから列名を解析するか、ユーザーがレポートを設計するときに列メタデータを格納すると生成される可能性があります。

+0

興味深いです。実行時にHTMLヘッダを生成することを意味しますか?列名の問題は、それらが何であるかわからないときの問題の1つです。残念ながら、このアプリは列のメタデータを格納するようには設計されていません。ドー! – Jon

+0

実行時にはい。 DataTables.netは結果列ごとに1列のtheadを必要とし、列名は各thセルに入る可能性があります。select文から列を解析し、列名をthセルに入れることができます。 [(例:#mytable).dataTable()。[この例を参照](http://datatables.net/examples/basic_init/zero_config.html) –

+0

私は、 SQLからパースされた列名のモデルが渡されます。その後、DataTablesはアクションを呼び出してJSON経由でデータを返しますが、このプロセスはDB呼び出しの重複を意味しますが、その回避方法はわかりません。ボスは伝統的なASP.Net、Grid - > Bind - > Job Doneを望むでしょう。AARRGGH! – Jon

1

どのバージョンの.NETを使用しますか? 4の場合は、新しいdynamicキーワードを使用できます。

この例は、新しいWebマトリックスで使用されています。これはSQL文字列を取り、クエリを実行し、結果として得られるオブジェクトはプロパティとしてsqlテーブルフィールドを持ちます。ウェブ行列は.NETプラットフォームの上に構築されてい

として、あなたは、Visual Studioで同じライブラリとメソッドを使用することができます。

あなたは、オブジェクトのプロパティの周りにループにrefectionを使用できるオブジェクトになります性質がわからない場合。ここで

は、基本のいくつかを示してlinkです。

更新:

var db = Database.Open("bakery"); 
var p = db.Query("SELECT * FROM PRODUCTS"); // This returns a list of products 

または単一の結果について

var db = Database.Open("TDL"); 
var selectQueryString = "SELECT * FROM Articles WHERE slug = @0"; 
var show = db.QuerySingle(selectQueryString, slug); 

最初の例では、私がすでに含まれてきた第二のhereからだっリンクからでした。

アップデート2:あなたが必要

アセンブリはWebMatrix.DataとWebMatrix.WebData、MSDNです。先ほどお話したように、オブジェクトのプロパティを見つけるためにリフレクションを使用する必要があります。ちょうどGoogleのC#リフレクションとそれを使用するためのチュートリアルがたくさんあります。

+0

動的に作成されたプロパティを持つオブジェクトを返すSQLスクリプトを実行するリンクを教えてください。 – Jon

+0

私の答えを更新しました。 – lancscoder

+0

あなたが指摘したように、唯一の問題は、SQLで返される列/プロパティがわからないことです。 – Jon

関連する問題