Как говорят на олове, можно создать экземпляр DbContext, пригодный для использования в качестве Entity Framework 5.0 POCO контекста, где Недвижимость Болгарии Недвижимости, которые, как правило, объявленная какEntity Framework 5.0 репозитория с динамическим DbContext
public DbSet<T> Entities { get; set; }
не установлены/известны до запуска?
Я хотел бы сделать репозиторий, который имеет такие методы, как
public TEntity Find<TEntity>(object key) where TEntity : class
{
return _context.Set<TEntity>().Find(key);
}
public void Update<TEntity>(TEntity entity) where TEntity : class
{
if (_context.Entry(entity).State == EntityState.Detached) //entity is detached
_context.Set<TEntity>().Attach(entity);
_context.Entry(entity).State = EntityState.Modified;
}
.... etc
, а затем использовать их, как:
Widget w = repository.Find<Widget>(123);
repository.SaveChanges();
Это тривиально, если контекст репозитария установлен в класс, который содержит a DbSet<Widget> Widgets
, но можно ли это сделать так, чтобы типы объектов, которые я планирую использовать, не будут известны до выполнения или, возможно, до тех пор, пока я их НЕ ИСПОЛЬЗУЮ их? Так что, если у меня есть новый класс Foo, я могу немедленно запросить мой репозиторий до .Find<Foo>(123)
без предварительного добавления DbSet<Foo> Foos
к моему классу DbContext?
Я думаю, что это должно быть возможно, потому что нет ничего особенного в классах poco или экземпляре DbContext, который содержит ссылки на них.