Создать DbSet <T>динамически в Entity Framework? - PullRequest
22 голосов
/ 15 марта 2011

В LINQ to SQL я могу динамически создавать хранилище, используя DataContext.GetTable<T>. Есть ли аналогичный способ сделать это в Entity Framework 4, кроме объявления свойств для конкретного DbContext? Например:

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

Я хотел бы знать, как я могу динамически создавать / получать ссылку на MySets, как я могу с LINQ to SQL, как в:

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

Ответы [ 2 ]

38 голосов
/ 15 марта 2011

DbContext имеет метод для этого:

  var set = context.Set<MyEntity>();
18 голосов
/ 15 марта 2011

Использование:

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

Или, если вы не можете использовать общий метод:

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

Не беспокойтесь о повторной загрузке и дублировании POCO.Наборы кэшируются внутри контекста.

...