2011-03-15 142 views
18

LINQ to SQLでは、DataContext.GetTable<T>を使用して動的にリポジトリを作成できます。特定のDbContextでプロパティを宣言する以外、Entity Framework 4でこれを行う同様の方法はありますか?たとえば:DbSet <T>をEntity Frameworkで動的に作成しますか?

public MyDbContext: DbContext 
{ 
    public DbSet<MySet> MySets {get; set;} 
} 

私は/作成できるのようにSQLにLINQを使用して動的に私ができるようMySetsへの参照を取得する方法を知っているしたいと思います:

var mySet = MyDbContext.GetTable<MySet>(); 

答えて

33

DbContextは、このための方法があります:

var set = context.Set<MyEntity>(); 
+0

私は私のプロジェクトで同様のものを使用しましたが、私は小さな問題に遭遇しました。 DbSetは動的に作成され、メモリ内グラフはうまく機能します。しかし、データをデータベースに格納する時が来たときなど。 context.SaveChanges()次の例外はスローです:無効なオブジェクト名 'dbo.CustomModel'。 – ppoliani

+0

存在しないdbオブジェクトへのアクセスを試みるため、マッピングに問題があるようです –

15

用途:

DbSet<MyEntity> set = context.Set<MyEntity>(); 

それとも、あなたは一般的な方法で使用できない場合:

DbSet set = context.Set(
    typeof(MyEntity) 
); 

が第二ローディングとPOCOを複製する心配しないでくださいを。セットはコンテキストによって内部的にキャッシュされます。

関連する問題