2017-05-11 18 views
1

はどのように反射 を使用してC#でDbContextから文字列としてのテーブルの名前を持つすべてのテーブルに対してDbSetオブジェクトを取得します -C#でDbContextから文字列としてのテーブルの名前を持つすべてのテーブルに対してDbSetオブジェクトを取得する方法

public DbSet GetTableObject(string tableName){ 

//TODO 

} 

この関数は、DbContextでC#でのリフレクションを使用して、指定されたテーブル名のDbSetオブジェクトを返す必要があります。 どうすればいいですか?

+2

基本データベース内のテーブル名、またはエンティティ名を使用しますか? テーブル名がTableAttributeを使用して構成されていることを保証できますか? EFのどのバージョンですか? –

+0

なぜこれが必要ですか?あなたは 'DbContext.Set ()'メソッドを使用できませんか? – CodeCaster

答えて

0

これがなぜ必要なのかわかりませんが、このようなものをお探しですか?

public object GetTableObject(string tableName) 
     { 

      PropertyInfo[] properties = typeof(Datalayer.Model.MyContext).GetProperties(); 
      var prop = properties.FirstOrDefault(p => p.Name == tableName); 

      using (var db = new Datalayer.Model.MyContext()) 
      { 
       var table = prop?.GetValue(db); 
       return table; 
      } 
     } 
+1

これは、プロパティ名がテーブル名と同じ場合にのみ一致します。 –

+1

ありがとう、私は文字列としてテーブル名を使用してフェッチされたテーブルの値を得ることができますが、私はちょうど文字列としてテーブル名を使用して取得したエンティティを使用して挿入、更新、削除エンティティのようなCRUD操作を実行する。 –

関連する問題