DbContext Класс

Определение

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

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification="Casing is intentional")]
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
type DbContext = class
    interface IDisposable
    interface IObjectContextAdapter
Public Class DbContext
Implements IDisposable, IObjectContextAdapter
Наследование
DbContext
Производный
Атрибуты
Реализации

Комментарии

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

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

DbContext()

Создает новый экземпляр контекста с использованием соглашений для создания имени базы данных, с которой будет установлено соединение. Имя по соглашению — это полное имя (пространство имен + имя класса) производного класса контекста. Сведения о том, как это используется для создания подключения, см. в примечаниях к классу.

DbContext(DbCompiledModel)

Создает новый экземпляр контекста с использованием соглашений для создания имени базы данных, с которой будет установлено соединение, и инициализирует его из заданной модели. Имя по соглашению — это полное имя (пространство имен + имя класса) производного класса контекста. Сведения о том, как это используется для создания подключения, см. в примечаниях к классу.

DbContext(DbConnection, Boolean)

Создает новый экземпляр контекста с использованием существующего соединения с базой данных. Соединение не будет удалено при удалении контекста, если contextOwnsConnection имеет значение false.

DbContext(DbConnection, DbCompiledModel, Boolean)

Создает новый экземпляр контекста с использованием существующего соединения с базой данных и инициализирует его из заданной модели. Соединение не будет удалено при удалении контекста, если contextOwnsConnection имеет значение false.

DbContext(ObjectContext, Boolean)

Создает новый экземпляр контекста вокруг существующего ObjectContext.

DbContext(ObjectContext, Boolean)

Создает новый экземпляр контекста вокруг существующего ObjectContext.

DbContext(String)

Создает новый экземпляр контекста с использованием соглашений для создания имени или строки подключения базы данных, с которой будет установлено соединение. Сведения о том, как это используется для создания подключения, см. в примечаниях к классу.

DbContext(String, DbCompiledModel)

Создает новый экземпляр контекста с использованием указанной строки в качестве имени или строки подключения с базой данных, с которой будет установлено соединение, и инициализирует его из заданной модели. Сведения о том, как это используется для создания подключения, см. в примечаниях к классу.

Свойства

ChangeTracker

Предоставляет доступ к функциям контекста, осуществляющим отслеживание изменений в сущностях.

Configuration

Предоставляет доступ к параметрам конфигурации контекста.

Database

Создает экземпляр базы данных для этого контекста, который позволяет выполнять проверки создания, удаления и существования базовой базы данных.

Методы

Dispose()

Вызывает защищенный метод Dispose.

Dispose(Boolean)

Освобождает контекст. Базовый ObjectContext объект также удаляется, если он был создан этим контекстом или владение было передано этому контексту при создании этого контекста. Соединение с базой данных (DbConnection объект) также удаляется, если она была создана этим контекстом или когда этот контекст был создан, то владение было передано этому контексту.

Entry(Object)

DbEntityEntry Возвращает объект для заданной сущности, предоставляющий доступ к сведениям о сущности и возможность выполнения действий с сущностью.

Entry<TEntity>(TEntity)

DbEntityEntry<TEntity> Возвращает объект для заданной сущности, предоставляющий доступ к сведениям о сущности и возможность выполнения действий с сущностью.

Equals(Object)

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

GetHashCode()

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

GetType()

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

GetValidationErrors()

Проверяет отслеживаемые сущности и возвращает коллекцию DbEntityValidationResult содержащих результаты проверки.

OnModelCreating(DbModelBuilder)

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

SaveChanges()

Сохраняет все изменения основной базы данных, произведенные в контексте.

SaveChangesAsync()

Асинхронно сохраняет все изменения, внесенные в этом контексте, в базовой базе данных.

SaveChangesAsync(CancellationToken)

Асинхронно сохраняет все изменения, внесенные в этом контексте, в базовой базе данных.

Set(Type)

Возвращает неуниверсивный DbSet экземпляр для доступа к сущностям заданного типа в контексте и базовом хранилище.

Set<TEntity>()

DbSet<TEntity> Возвращает экземпляр для доступа к сущностям заданного типа в контексте и базовом хранилище.

ShouldValidateEntity(DbEntityEntry)

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

ToString()

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

ValidateEntity(DbEntityEntry, IDictionary<Object,Object>)

Расширение, позволяющее пользователю настроить проверку сущности или отфильтровать результаты проверки. Вызывается методом GetValidationErrors().

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

IObjectContextAdapter.ObjectContext

Возвращает Entity Framework ObjectContext, лежащий в основе этого контекста.

Применяется к