Подтвердить что ты не робот

"ObjectContext" против "DbContext" в Entity Framework

Я использую класс DbContext в коде, который я создаю, который основан на шаблонах общих хранилищ и единиц измерения. (Я следую руководству здесь.) Во время работы над этим проектом я столкнулся с классом ObjectContext.

Я прочитал довольно много сообщений, в которых обсуждаются ObjectContext и DbContext. Хотя некоторые из того, что я прочитал, имеют смысл, я до сих пор не имею полного понимания различий, и это оставляет мне интерес к моей текущей реализации. Должен ли я использовать DbContext, ObjectContext или оба? Использует ли один из них теперь рассмотренный анти-шаблон?

4b9b3361

Ответ 1

DbContext - это просто обертка вокруг ObjectContext.

DbContext - это всего лишь набор API-интерфейсов, которые проще в использовании, чем API, выставленные ObjectContext.

В любом случае здесь вы найдете очень простой шаблон Visual Studio, который использует шаблон хранилища и инфраструктуру Entity Framework.

Ответ 2

Мы можем использовать DBContext для ввода ObjectContext

public class MyContext: DbContext
{
    public DbSet<Blog> Blogs { get; set; }
   //other dbsets, ctor etc.

    public ObjectContext ObjectContext()
    {
        return (this as IObjectContextAdapter).ObjectContext;
    }
}

Ответ 3

От ObjectContext VS DBContext.

Dbcontext может быть определен как облегченная версия ObjectContext, или мы можем сказать, что Dbcontext является оболочкой ObjectContext и предоставляет только общие функции, которые действительно необходимы в программировании. Мы также можем получить ссылку на ObjectContext, а затем на DbContext, чтобы использовать те функции, которые поддерживаются только в ObjectContext.

Следующий код может помочь получить объект ObjectContext из существующего объекта DbContext.

public class EntityDBContext: DbContext, IObjectContextAdapter
{
   ObjectContext IObjectContextAdapter.ObjectContext
   {
        get
        {
              var objectContext = (this as IObjectContextAdapter)
              if(objectContext != null)
                return (this as IObjectContextAdapter).ObjectContext;
              else
                return null;
        }
   }
}

Наконец, DbContext не является заменой ObjectContext, но это простая альтернатива, которая основывается на ObjectContext.