DbContext Класс

Определение

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

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbQueryCache, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
public class DbContext : IAsyncDisposable, IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
type DbContext = class
    interface IDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbQueryCache
    interface IDbContextPoolable
type DbContext = class
    interface IDisposable
    interface IAsyncDisposable
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
    interface IResettableService
type DbContext = class
    interface IInfrastructure<IServiceProvider>
    interface IDbContextDependencies
    interface IDbSetCache
    interface IDbContextPoolable
    interface IResettableService
    interface IDisposable
    interface IAsyncDisposable
Public Class DbContext
Implements IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IDbContextDependencies, IDbContextPoolable, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IDbContextDependencies, IDbContextPoolable, IDbQueryCache, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IAsyncDisposable, IDbContextDependencies, IDbContextPoolable, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Наследование
DbContext
Реализации
IInfrastructure<IServiceProvider> IDisposable Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable Microsoft.EntityFrameworkCore.Internal.IDbSetCache Microsoft.EntityFrameworkCore.Internal.IDbQueryCache IResettableService IAsyncDisposable

Комментарии

Как правило, создается класс, производный от DbContext, который содержит DbSet<TEntity> свойства для каждой сущности в модели. Если DbSet<TEntity> свойства имеют общедоступный метод задания, они автоматически инициализируются при создании экземпляра производного контекста.

Переопределите OnConfiguring(DbContextOptionsBuilder) метод, чтобы настроить базу данных (и другие параметры) для использования в контексте. В качестве альтернативы, если вместо встроенного в контексте нужно настроить внешний вид, можно использовать DbContextOptionsBuilder<TContext> (или DbContextOptionsBuilder ) для внешнего создания экземпляра DbContextOptions<TContext> (или DbContextOptions ) и передать его в базовый конструктор DbContext .

Модель обнаруживается путем запуска набора соглашений по классам сущностей, найденных в DbSet<TEntity> свойствах в производном контексте. Для дальнейшей настройки модели, обнаруженной соглашением, можно переопределить OnModelCreating(ModelBuilder) метод.

Дополнительные сведения см. в статьях DbContext Lifetime, Configuration и Initialization, запрос данных с помощью EF Core, Изменение отслеживанияи Сохранение данных с помощью EF Core .

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

DbContext()

Инициализирует новый экземпляр класса DbContext. Конструктор OnConfiguring(DbContextOptionsBuilder) метод будет вызван для настройки базы данных (и других параметров) для использования в этом контексте.

DbContext(DbContextOptions)

Инициализирует новый экземпляр DbContext класса, используя указанные параметры. OnConfiguring(DbContextOptionsBuilder)Метод будет по-прежнему вызываться, чтобы разрешить дальнейшую настройку параметров.

Свойства

ChangeTracker

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

ContextId

Уникальный идентификатор для экземпляра контекста и аренды пула, если таковые имеются.

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

Database

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

Model

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

Методы

Add(Object)

Начинает отслеживание данной сущности и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Используется State для установки состояния только одной сущности.

Add<TEntity>(TEntity)

Начинает отслеживание данной сущности и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Используется State для установки состояния только одной сущности.

AddAsync(Object, CancellationToken)

Начинает отслеживание данной сущности и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Используется State для установки состояния только одной сущности.

Этот метод является асинхронным только для того, чтобы разрешить для асинхронного доступа к базе данных специальные генераторы значений, такие как, используемые "Microsoft. EntityFrameworkCore. Metadata. Склсервервалуеженератионстратеги. Секуенцехило". Во всех остальных случаях следует использовать не асинхронный метод.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

AddAsync<TEntity>(TEntity, CancellationToken)

Начинает отслеживание данной сущности и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Этот метод является асинхронным только для того, чтобы разрешить для асинхронного доступа к базе данных специальные генераторы значений, такие как, используемые "Microsoft. EntityFrameworkCore. Metadata. Склсервервалуеженератионстратеги. Секуенцехило". Во всех остальных случаях следует использовать не асинхронный метод.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

AddRange(IEnumerable<Object>)

Начинает отслеживание заданных сущностей и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

AddRange(Object[])

Начинает отслеживание заданных сущностей и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

AddRangeAsync(IEnumerable<Object>, CancellationToken)

Начинает отслеживание данной сущности и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Этот метод является асинхронным только для того, чтобы разрешить для асинхронного доступа к базе данных специальные генераторы значений, такие как, используемые "Microsoft. EntityFrameworkCore. Metadata. Склсервервалуеженератионстратеги. Секуенцехило". Во всех остальных случаях следует использовать не асинхронный метод.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

AddRangeAsync(Object[])

Начинает отслеживание данной сущности и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Этот метод является асинхронным только для того, чтобы разрешить для асинхронного доступа к базе данных специальные генераторы значений, такие как, используемые "Microsoft. EntityFrameworkCore. Metadata. Склсервервалуеженератионстратеги. Секуенцехило". Во всех остальных случаях следует использовать не асинхронный метод.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

Attach(Object)

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

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

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

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Unchanged состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что будут вставлены только новые сущности. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Unchanged .

Используется State для установки состояния только одной сущности.

Attach<TEntity>(TEntity)

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

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

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

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Unchanged состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что будут вставлены только новые сущности. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Unchanged .

Используется State для установки состояния только одной сущности.

AttachRange(IEnumerable<Object>)

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

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

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

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Unchanged состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что будут вставлены только новые сущности. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Unchanged .

Используется State для установки состояния только одной сущности.

AttachRange(Object[])

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

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

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

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Unchanged состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что будут вставлены только новые сущности. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Unchanged .

Используется State для установки состояния только одной сущности.

ConfigureConventions(ModelConfigurationBuilder)

Переопределите этот метод, чтобы задать значения по умолчанию и настроить соглашения перед их запуском. Этот метод вызывается раньше OnModelCreating(ModelBuilder) .

Dispose()

Освобождает выделенные ресурсы для этого контекста.

DisposeAsync()

Освобождает выделенные ресурсы для этого контекста.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

Entry(Object)

Возвращает EntityEntry для данной сущности. Запись предоставляет доступ к сведениям об отслеживанию изменений и операциям для сущности.

Этот метод может быть вызван для неотслеживающей сущности. Затем можно задать State свойство в возвращаемой записи, чтобы контекст начал отслеживать сущность в указанном состоянии.

Entry<TEntity>(TEntity)

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

Find(Type, Object[])

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

Find<TEntity>(Object[])

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

FindAsync(Type, Object[])

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

FindAsync(Type, Object[], CancellationToken)

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

FindAsync<TEntity>(Object[])

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

FindAsync<TEntity>(Object[], CancellationToken)

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

FromExpression<TResult>(Expression<Func<IQueryable<TResult>>>)

Создает запрос для заданного выражения запроса.

OnConfiguring(DbContextOptionsBuilder)

Переопределите этот метод, чтобы настроить базу данных (и другие параметры) для использования в этом контексте. Этот метод вызывается для каждого экземпляра создаваемого контекста. Базовая реализация ничего не делает.

В ситуациях, когда экземпляр DbContextOptions может быть передан конструктору или может быть недоступен, можно использовать, IsConfigured чтобы определить, были ли уже заданы параметры, и пропустить некоторую или всю логику в OnConfiguring(DbContextOptionsBuilder) .

OnModelCreating(ModelBuilder)

Переопределите этот метод для дальнейшей настройки модели, обнаруженной соглашением из типов сущностей, предоставленных в DbSet<TEntity> свойствах производного контекста. Полученная модель может быть кэширована и повторно использоваться для последующих экземпляров производного контекста.

Query<TQuery>()
Является устаревшей.

Создает объект DbSet<TEntity> , который можно использовать для запроса экземпляров TQuery .

Remove(Object)

Начинает отслеживание заданной сущности в Deleted состоянии таким, что оно будет удалено из базы данных при SaveChanges() вызове.

Remove<TEntity>(TEntity)

Начинает отслеживание заданной сущности в Deleted состоянии таким, что оно будет удалено из базы данных при SaveChanges() вызове.

RemoveRange(IEnumerable<Object>)

Начинает отслеживание заданной сущности в Deleted состоянии таким, что оно будет удалено из базы данных при SaveChanges() вызове.

RemoveRange(Object[])

Начинает отслеживание заданной сущности в Deleted состоянии таким, что оно будет удалено из базы данных при SaveChanges() вызове.

SaveChanges()

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

Этот метод будет автоматически вызывать DetectChanges() для обнаружения любых изменений в экземплярах сущностей перед сохранением в основную базу данных. Это можно отключить с помощью AutoDetectChangesEnabled .

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

SaveChanges(Boolean)

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

Этот метод будет автоматически вызывать DetectChanges() для обнаружения любых изменений в экземплярах сущностей перед сохранением в основную базу данных. Это можно отключить с помощью AutoDetectChangesEnabled .

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

SaveChangesAsync(Boolean, CancellationToken)

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

Этот метод будет автоматически вызывать DetectChanges() для обнаружения любых изменений в экземплярах сущностей перед сохранением в основную базу данных. Это можно отключить с помощью AutoDetectChangesEnabled .

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

SaveChangesAsync(CancellationToken)

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

Этот метод будет автоматически вызывать DetectChanges() для обнаружения любых изменений в экземплярах сущностей перед сохранением в основную базу данных. Это можно отключить с помощью AutoDetectChangesEnabled .

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

Set<TEntity>()

Создает объект DbSet<TEntity> , который может использоваться для запроса и сохранения экземпляров TEntity .

Entity Framework Core не поддерживает несколько параллельных операций, выполняемых на одном и том же экземпляре DbContext. включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

Set<TEntity>(String)

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

Типы сущностей с общим типом обычно используются для сущности JOIN в связях «многие ко многим».

Update(Object)

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

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

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

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Modified состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что новые сущности будут вставлены, а существующие сущности будут обновлены. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Modified .

Используется State для установки состояния только одной сущности.

Update<TEntity>(TEntity)

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

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

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

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Modified состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что новые сущности будут вставлены, а существующие сущности будут обновлены. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Modified .

Используется State для установки состояния только одной сущности.

UpdateRange(IEnumerable<Object>)

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

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

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

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Modified состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что новые сущности будут вставлены, а существующие сущности будут обновлены. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Modified .

Используется State для установки состояния только одной сущности.

UpdateRange(Object[])

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

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

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

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Modified состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что новые сущности будут вставлены, а существующие сущности будут обновлены. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Modified .

Используется State для установки состояния только одной сущности.

События

SaveChangesFailed

Событие, которое срабатывает, если вызов SaveChanges или SaveChangesAsync завершается с исключением.

SavedChanges

Событие, инициированное в конце вызова SaveChanges или SaveChangesAsync

SavingChanges

Событие, запущенное в начале вызова SaveChanges или SaveChangesAsync

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

IDbContextDependencies.ChangeDetector

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextDependencies.EntityFinderFactory

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextDependencies.EntityFinderSource

Этот API поддерживает инфраструктуру Entity Framework Core и не предназначен для непосредственного использования в коде. В будущих выпусках этот API может быть изменен или удален.

IDbContextDependencies.EntityGraphAttacher

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextDependencies.InfrastructureLogger

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextDependencies.QueryProvider

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextDependencies.QuerySource

Этот API поддерживает инфраструктуру Entity Framework Core и не предназначен для непосредственного использования в коде. В будущих выпусках этот API может быть изменен или удален.

IDbContextDependencies.SetSource

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextDependencies.StateManager

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextDependencies.UpdateLogger

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextPoolable.ClearLease()

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextPoolable.ResetState()
IDbContextPoolable.Resurrect(DbContextPoolConfigurationSnapshot)

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextPoolable.SetLease(DbContextLease)

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextPoolable.SetLeaseAsync(DbContextLease, CancellationToken)

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextPoolable.SetPool(IDbContextPool)

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbContextPoolable.SnapshotConfiguration()

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbQueryCache.GetOrAddQuery(IDbQuerySource, Type)

Этот API поддерживает инфраструктуру Entity Framework Core и не предназначен для непосредственного использования в коде. В будущих выпусках этот API может быть изменен или удален.

IDbSetCache.GetOrAddSet(IDbSetSource, String, Type)

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IDbSetCache.GetOrAddSet(IDbSetSource, Type)

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IInfrastructure<IServiceProvider>.Instance

Возвращает область, IServiceProvider используемую для разрешения служб.

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

IResettableService.ResetState()

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

IResettableService.ResetStateAsync(CancellationToken)

Это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняются тем же стандартам совместимости, что и общедоступные API. Его можно изменить или удалить без уведомления в любом выпуске. Его следует использовать непосредственно в коде с особой осторожностью, зная, что это может привести к сбоям приложения при обновлении до новой Entity Framework Core выпуска.

Методы расширения

GetInfrastructure<T>(IInfrastructure<T>)

Возвращает значение из свойства, которое скрыто с помощью IInfrastructure<T> .

Этот метод обычно используется поставщиками баз данных (и другими расширениями). Обычно он не используется в коде приложения.

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

CreateProxy(DbContext, Type, Object[])

Создает экземпляр прокси-сервера для типа сущности, если создание прокси-сервера включено.

CreateProxy<TEntity>(DbContext, Action<TEntity>, Object[])

Создает экземпляр прокси-сервера для типа сущности, если создание прокси-сервера включено.

CreateProxy<TEntity>(DbContext, Object[])

Создает экземпляр прокси-сервера для типа сущности, если создание прокси-сервера включено.

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