2009-08-17 30 views
0

エンティティフレームワークモデルを使用してデータベースにクエリを行い、使用するいくつかのビューをすべて同じクエリパラメータを持つビューに入れました。 case-switchステートメントの大きなリストを書くのではなく、私のmainメソッドへのパラメータとしてビューオブジェクトを渡すことによって、プログラムでこれを行う方法が不思議です。 SQLで私はどうなる。このように:私はちょうどあなたがテーブルのどのタイプを知っていれば大丈夫ですLinq to Entity Frameworkモデル - プログラムでビューを切り替える方法

public void Tables(Type TableName) 
{ 
    using(EntityModel entity = new EntityModel()){ 
     ObjectQuery<Users> oq = new ObjectQuery<Users>("EntityModel.Users", EntityModel); 
     var q = (from p in oq select p); 
} 

すなわちエンティティフレームワークモデルと同様のことを行う方法を見ることができないしかし

public void Tables(string TableName) 
{ 
    using(EntityModel entity = new EntityModel()){ 
     string sql = "select * from " + TableName; 
     etc.... 
} 

ObjectQueryは変数、typeof()、またはハードコードされていないものを受け入れることができないため、型として渡すことはできません。もしこれがすべて可能なのであれば、誰でも何か考えがありますか?

+0

を渡すために、一般的なメソッドを使用します。彼らがあなたのアプリ(ユーザー入力?)の外で発生した場合は、セキュリティ上の理由から、スイッチ/ケースを使う方が良いでしょう。 –

+0

それはすべて内部的なので、心配しないでください!表示したいビューのプルダウンメニューを選択する以外にユーザー入力はありません –

+0

これはWebアプリケーションの場合、そのようなユーザー入力はまだ安全ではない文字列です(なぜなら、私はポート80とあなたのサーバーにHTTPを話す。それは私がそれを撃つだろうと言った。 –

答えて

0

これはEntity SQLで実行できますが、依然としてクエリの戻り値の型を知る必要があります。クエリが常に同じタイプのエンティティを返した場合、 "TableName"を渡すことはないと思います。だからあなたは実際にクエリから欲しいのですか?いくつかのスカラー値?結局のところ、ScalarsはあなたがSQLの例から抜け出す全てです。 Entity SQLでこれを行い、エンティティセット名を文字列として指定し、スカラー結果を戻すことができます。参照:http://msdn.microsoft.com/en-us/library/cc716751.aspx

+0

ありがとう –

0

は、私は文字列がどこから来尋ねることはほとんど怖いタイプ

public void Tables<TTableType>(string TableName) 
{ 
    using (EntityModel entity = new EntityModel()) 
    { 
      ObjectQuery<TTableType> oq = new ObjectQuery<TTableType>("EntityModel." + TableName, entity);  
      var q = (from p in oq select p); 
     } 
    } 
関連する問題