2011-06-21 14 views
0

私が現在取り組んでいるアプリケーションでは、ユーザーが定義したテーブルが動的に生成されるため、dbスキーマがわからない部分があります。MVC 3で動的データモデルを処理する方法

アプリケーションはASP.Net MVC 3とSQL Server 2008 R2で実行されています。そのようなアプリケーションでは、データオブジェクトとデータアクセスレイヤーに何を使用することをお勧めしますか?

1つの選択肢は、単にDALからデータテーブルを戻して使用することです。しかし、彼らは型がないでしょう。 オプションは、結果セットからオブジェクトを動的に作成することです。それはうまく動作しません。

他の方法はありますか? Entity Frameworkのコードが役に立ちますか? Expandoオブジェクトはどうですか?

非常に重要なことの1つは、アプリケーションがGBsのような非常に広範なデータであることです。

+0

これらの未知のデータ構造でユーザーは何を期待していますか?または、データの論理構造がわかっていて、データベーススキーマだけがユーザーごとに異なる可能性がありますか? –

答えて

0

ユーザーがテーブルを動的に作成するアプリケーションは、Entity Frameworkのシナリオではありません。エンティティフレームワークでは、テーブルにマッピングされたコンパイル済みクラスが必要です(表記法では推測されない場合は+マッピング)。コードではこれらのクラスを使用してそれらを利用する必要があります。

私の意見では、テーブルが動的に作成されるアプリケーションは、強く型付けされたアクセスや優れたパフォーマンスを期待できるアプリケーションではありません。これらの要件は両方とも、明確に定義されたクラスセット(設計時に定義されたクラス)に対してコードを記述し、これらのクラスのコードとデータアクセスを最適化することを期待しています。シナリオでは、これは不可能です - タイプのないデータセットと動的に作成されたSQL + ASP.NETデータバインドされたコントロールを使用し、ほとんどの場合にうまくいくことを願っています。

編集:

今、私はあなたがMVC3 =バインドなしデータコントロールを使用することを参照してください。未定義のデータセットを検査し、事前にわからない構造でデータを表示、編集、検証できるようにUIを生成するコードを記述する必要があります。これは、新しく作成されたテーブル、制約、フィールドサイズ、ヌル可能な列などを記述する独自のメタモデルが必要であることを一般的に意味し、この情報を使用してUIを作成し、その情報から型なしデータセットを準備します。

関連する問題