Почему Entity Framework автоматически использует ObjectContext вместо DbContext при отображении таблиц базы данных с использованием ADO.NET Entity datamodel - PullRequest
13 голосов
/ 26 января 2012

Сначала я следую подходу к базе данных;Я создал таблицы в своей базе данных SQL Server 2008, затем сопоставил эти таблицы с классами Entity Framework, используя модель данных ADO.NET Entity.Но когда я открыл файл designer.cs, я нашел следующий код в определении класса, который был создан автоматически:

public partial class PortalEntities : ObjectContext

, поэтому у меня возникли следующие три вопроса, которые запутали меня:

  1. Почему мой PortalEntities класс происходит от ObjectContext, а не DbContext, как я ожидал?

  2. Есть ли существенная разница между ObjectContext &DbContext, или они в основном одинаковы и предлагают те же возможности

  3. Когда я пытаюсь написать что-то похожее на следующий код:

    Student student = db.Students.Find(id);
    

Я обнаружил, что не могу использовать метод .Find(), как раньше, когда использовал DbContext, значит ли это, что ObjectContext & DbContext имеет разные методы, которые я могу использовать?

BR

Ответы [ 2 ]

24 голосов
/ 26 января 2012

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

Если у вас есть DbContext, вы все равно можете получить доступ к ObjectContext кормушке ((IObjectContextAdapter)dbContext).ObjectContext;

Если вы хотите использовать DbContext вместо ObjectContext при первом использовании базы данных, вы можете переключить шаблон, который используется для генерации вашего кода.Вы можете сделать это, щелкнув правой кнопкой мыши в вашем EDMX и выбрав «Добавить элемент генерации кода».Затем вы можете выбрать шаблон DbContext.

Вот пример всего процесса.

0 голосов
/ 21 апреля 2015

С VS2012 генерация кода по умолчанию изменилась с ObjectContext на DbContext.

...