Различия между .CreateObjectSet , .Set и .CreateQuery ?

Я пишу общий репозиторий для 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 метода.

10
задан JiBéDoublevé 13 January 2014 в 18:29
поделиться