DbContext - класс

[Эта страница относится к документации к Entity Framework 6. Последняя версия доступна в составе пакета Entity Framework NuGet. Дополнительные сведения об Entity Framework см. в разделе msdn.com/data/ef.]

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

Иерархия наследования

System.Object
  System.Data.Entity.DbContext
    System.Data.Entity.Infrastructure.TransactionContext
    System.Data.Entity.Migrations.History.HistoryContext

Пространство имен:  System.Data.Entity
Сборка:  EntityFramework (в EntityFramework.dll)

Синтаксис

'Декларация
Public Class DbContext _
    Implements IDisposable, IObjectContextAdapter
'Применение
Dim instance As DbContext
public class DbContext : IDisposable, IObjectContextAdapter
public ref class DbContext : IDisposable, 
    IObjectContextAdapter
type DbContext =  
    class 
        interface IDisposable 
        interface IObjectContextAdapter 
    end
public class DbContext implements IDisposable, IObjectContextAdapter

Тип DbContext предоставляет следующие члены.

Конструкторы

  Имя Описание
Защищенный метод DbContext() Создает новый экземпляр контекста с использованием соглашений для создания имени базы данных, с которой будет установлено соединение.Имя по соглашению представляет собой полное имя (пространство имен + имя класса) производного класса контекста.Как это используется при создании соединения, см. в примечаниях к классу.
Открытый метод DbContext(String) Создает новый экземпляр контекста с использованием соглашений для создания имени или строки подключения базы данных, с которой будет установлено соединение.Как это используется при создании соединения, см. в примечаниях к классу.
Защищенный метод DbContext(DbCompiledModel) Создает новый экземпляр контекста с использованием соглашений для создания имени базы данных, с которой будет установлено соединение, и инициализирует его из заданной модели.Имя по соглашению представляет собой полное имя (пространство имен + имя класса) производного класса контекста.Как это используется при создании соединения, см. в примечаниях к классу.
Открытый метод DbContext(DbConnection, Boolean) Создает новый экземпляр контекста с использованием существующего соединения с базой данных.Соединение не будет освобождено при освобождении контекста, если contextOwnsConnection является false.
Открытый метод DbContext(String, DbCompiledModel) Создает новый экземпляр контекста с использованием указанной строки в качестве имени или строки подключения с базой данных, с которой будет установлено соединение, и инициализирует его из заданной модели.Как это используется при создании соединения, см. в примечаниях к классу.
Открытый метод DbContext(ObjectContext, Boolean) Создает новый экземпляр контекста на основе существующего объекта ObjectContext.
Открытый метод DbContext(DbConnection, DbCompiledModel, Boolean) Создает новый экземпляр контекста с использованием существующего соединения с базой данных и инициализирует его из заданной модели.Соединение не будет освобождено при освобождении контекста, если contextOwnsConnection является false.

По верхнему краю

Свойства

  Имя Описание
Открытое свойство ChangeTracker Предоставляет доступ к функциям контекста, осуществляющим отслеживание изменений в сущностях.
Открытое свойство Configuration Предоставляет доступ к параметрам конфигурации контекста.
Открытое свойство Database Создает экземпляр базы данных для этого контекста, который позволяет выполнять создание, удаление или проверку существования основной базы данных.

По верхнему краю

Методы

  Имя Описание
Открытый метод Dispose() Вызывает защищенный метод Dispose.
Защищенный метод Dispose(Boolean) Освобождает контекст.Базовый объект ObjectContext также удаляется, если был создан данным контекстом либо если при создании данного контекста этот объект был передан ему во владение.Соединение с базой данных (объект DbConnection) также освобождается, если оно было создано данным контекстом либо если при создании данного контекста это соединение было передано ему во владение.
Открытый метод Entry(Object) Возвращает для заданной сущности объект DbEntityEntry, предоставляющий доступ к сведениям о сущности и о возможности выполнения действий над ней.
Открытый метод Entry<TEntity>(TEntity) Возвращает для заданной сущности объект DbEntityEntry<TEntity>, предоставляющий доступ к сведениям о сущности и о возможности выполнения действий над ней.
Открытый метод Equals Определяет, равен ли заданный контекст DbContext текущему. (Переопределяет Object.Equals(Object).)
Защищенный метод Finalize (Унаследовано от Object.)
Открытый метод GetHashCode Возвращает хэш-функцию для данного контекста DBContext. (Переопределяет Object.GetHashCode().)
Открытый метод GetType Возвращает тип текущего контекста DbContext.
Открытый метод GetValidationErrors Проверяет отслеживаемые сущности и возвращает коллекцию DbEntityValidationResult, содержащую результаты проверки.
Защищенный метод MemberwiseClone (Унаследовано от Object.)
Защищенный метод OnModelCreating Этот метод вызывается, если модель для производного контекста была инициализирована, прежде чем модель была заблокирована и использована для инициализации контекста.Реализация этого метода по умолчанию не делает ничего, но его можно переопределить в производном классе и выполнить в нем дальнейшую настройку модели перед ее блокировкой.
Открытый метод SaveChanges Сохраняет все изменения основной базы данных, произведенные в контексте.
Открытый метод SaveChangesAsync() Асинхронно сохраняет все изменения основной базы данных, произведенные в контексте.
Открытый метод SaveChangesAsync(CancellationToken) Асинхронно сохраняет все изменения основной базы данных, произведенные в контексте.
Открытый метод Set(Type) Возвращает неуниверсальный экземпляр DbSet для доступа к сущностям заданного типа в контексте и в базовом хранилище.
Открытый метод Set<TEntity>() Возвращает экземпляр DbSet<TEntity> для доступа к сущностям заданного типа в контексте и в базовом хранилище.
Защищенный метод ShouldValidateEntity Расширение, позволяющее пользователю переопределить поведение по умолчанию, предполагающее проверку только добавленных и измененных сущностей.
Открытый метод ToString Возвращает строковое представление контекста DbContext. (Переопределяет Object.ToString().)
Защищенный метод ValidateEntity Расширение, позволяющее пользователю настраивать проверку сущности или отфильтровать результаты проверки.Вызывается методом GetValidationErrors().

По верхнему краю

Явные реализации интерфейса

  Имя Описание
Явная реализация интерфейсаЗакрытое свойство IObjectContextAdapter.ObjectContext Возвращает объект Entity Framework ObjectContext, который является базовым для данного контекста.

По верхнему краю

Примечания

DbContext обычно используется вместе с производным типом, который содержит свойства DbSet<TEntity> для корневых сущностей модели. Эти наборы автоматически инициализируются при создании экземпляра производного класса. Это поведение можно изменить, применив атрибут SuppressDbSetInitializationAttribute либо ко всему производному классу контекста, либо к отдельным свойствам этого класса. Модель EDM, поддерживающая контекст, может быть задана несколькими способами. При использовании подхода Code First свойства DbSet<TEntity> в производном контексте по соглашению используются для сборки модели. Для настройки этой модели можно переопределить защищенный метод OnModelCreating. Более полное управление моделью в целях применения подхода Model First можно получить, создав объектDbCompiledModel явно из объекта DbModelBuilder и передав эту модель в один из конструкторов DbContext. При использовании подхода Database First или Model First модель EDM может быть создана с помощью конструктора сущностей (или вручную путем создания файла EDMX), а затем задана с помощью строки соединения сущности или объекта EntityConnection. Соединение с базой данных (включая имя базы данных) можно задать несколькими способами. Если конструктор без параметров DbContext по умолчанию вызывается из производного контекста, то имя производного контекста используется для нахождения строки подключения в файле конфигурации app.config или web.config. Если строка подключения обнаружена, это имя передается объекту DefaultConnectionFactory, зарегистрированному в классе Database. Фабрика соединений использует имя контекста в качестве имени базы данных в строке подключения по умолчанию. (Эта строка подключения по умолчанию указывает на папку \SQLEXPRESS на локальному компьютере, если не зарегистрирован другой объект DefaultConnectionFactory.) Вместо использования производного имени контекста можно также явно указать имя соединения или базы данных, передав это имя одному из конструкторов DbContext, принимающих на входе строку. Имя можно передать также в форме «name=мое_имя». В этом случае имя должно присутствовать в файле конфигурации, иначе возникнет исключение. Обратите внимание, что соединение, обнаруженное в файле конфигурации app.config или web.config, может быть обычной строкой подключения базы данных (а не специализированной строкой подключения Entity Framework). В этом случае объект использует подход Code First. Однако если соединение, обнаруженное в файле конфигурации, представляет собой специализированную строку подключения Entity Framework, объект DbContext использует подход Database First или Model First и модель, указанную в строке подключения. Вместо имени базы данных или подключения можно также использовать существующий или явно созданный объект DbConnection. Атрибут DbModelBuilderVersionAttribute можно применить к классу, производному от DbContext, чтобы задать версию соглашений, использованных контекстом при создании модели. Если этот атрибут не применен, используется последняя версия соглашений.

Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасная работа с членами экземпляров типа не гарантируется.

См. также

Справочник

System.Data.Entity - пространство имен