Я пишу общий репозиторий для Entity Framework и не понимаю, в чем разница между этими вызовами:
ObjectContext.CreateObjectSet<T>
ObjectContext.CreateQuery<T>
DbContext.Set<T>
Мне нужен общий репозиторий, который поддерживает контекст, сгенерированный из файлов .edmx, а также сначала код DbContext, поэтому у меня есть это:
public abstract class EntityRepository<TClass>
where TClass : class, new()
{
//private readonly TContext _context;
private readonly ObjectSet<TClass> _objectSet;
protected EntityRepository(IObjectContextAdapter context)
{
_objectSet = context.ObjectContext.CreateObjectSet<TClass>();
}
protected EntityRepository(ObjectContext context)
{
_objectSet = context.CreateObjectSet<TClass>();
}
public ObjectSet<TClass> Query()
{
return _objectSet;
}
}
В примерах, которые я видел в Интернете, я видел, что все 3 использовались, каковы фактические различия между ними? Разумно ли лучше работать? Я знаю, что вы можете писать запросы LINQ к контекстам, используя все 3 метода.