ObjectContext и DbContext в Entity Framework - PullRequest
       64

ObjectContext и DbContext в Entity Framework

16 голосов
/ 07 февраля 2012

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

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

Ответы [ 3 ]

21 голосов
/ 07 февраля 2012

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

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

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

0 голосов
/ 25 марта 2015

С 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.

0 голосов
/ 12 декабря 2012

Мы можем привести DBContext к типу ObjectContext

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

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