エンティティフレームワークの基本クラスを含むアセンブリを読み込み、型情報を使用して同じクラスをアクティブ化または作成しようとしています。リフレクションを使用してエンティティフレームワークを照会する
タイプインフォメーションを使用して、データベース内のすべての列とデータを動的に照会してリストしたいと考えました。基本的には、すべてのテーブルの内容をリストする単一の場所。
次のようにいくつかのコード:
private Type GetInstanceType(string tableName)
{
return Assembly.Load("EntityFrameWorkDLLName").GetTypes().FirstOrDefault(t => t.Name == tableName);
}
public void GetEntityList(string name)
{
// the list method where I pass the table name to query table using the db context
var instanceType =GetInstanceType(name);
if (instanceType != null)
{
var obj = Activator.CreateInstance(instanceType)
db.obj.Select();// here I am stuck without knowing how to proceed
or db.Set<obj.GetType()> // this also fails with error '<' cannot be applied to operands of 'method group' and 'Type'
}
}
は私がやろうとしています何てもよいかなりばかげている、誰かが理由を指摘することができますか?ジェネリックスの型パラメータを表すために具体的なインスタンスの.gettypeを使用できるのであれば、どんなオブジェクトも動的に配置できます。私は質問の理由だと思う質問のこの部分に答えるために
最終結果はどのように見えるのですか? – Win
例えば、私がEF dllにあるテーブル名 "User"を渡すと、そのタイプはデータベースのUserテーブルに解決され、すべてのユーザデータがリストされます。 – RRR
最終結果がユーザのリストである場合、** dbContext.Users **のようにEFを直接使用しないのはなぜですか?私はここで反射の必要性を見ていないよ。 – Win