Является ли DbContext таким же, как DataContext?

Я следую учебнику Scott Gu, который относится к классу с именем DbContext. Я не могу найти его на каком-либо пространстве имен в фреймворке 4, и мне кажется, что он был переименован из CT4 DbContext в .net4 System.Data.Linq.DataContext. Правильно ли мое предположение?

Ответ 1

DbContext - это новый класс, который был добавлен в недавнюю отдельную загрузку командой EF. В настоящее время он не является частью основного EF 4.0. Однако DbContext перемещение вперед было бы предпочтительным способом взаимодействия с EF.

Итак, как он отличается от ObjectContext? Ну семантически они точно такие же, но они уменьшили массу дополнительного шума, который имел ObjectContext. Например, для выставления набора требуется больше работы, например:

public ObjectSet<Customer> Customers
{
    get { return db.CreateObjectSet<Customer>(); }
}

С помощью DbContext вы можете:

public DbSet<Customer> Customers { get; set; }

В основном на ObjectContext, когда вы делаете точку (.), все просто там, что делает список довольно огромным. То, что команда EF на самом деле захотела выставить на DbContext, - это объекты, которые относятся только к вашему домену, а остальная часть возможностей платформы подпадает под разные свойства. Это просто облегчает процесс программирования.

Это означает, что если вы используете ObjectContext прямо сейчас, с небольшим количеством кода, вы можете легко перейти к DbContext.

Ответ 2

Это слишком поздно, но для гуглеров. DbContext используется для EF (EntityFramework), а DataContext используется для L2S (LINQ To SQL).