Создать DbSet динамически в Entity Framework?

в 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 ответов


DbContext есть метод для этого:

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

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

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

или, если вы не можете использовать универсальный способ:

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

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