Поделиться через


DatabaseFacade Класс

Определение

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

public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
    interface IResettableService
Public Class DatabaseFacade
Implements IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider), IResettableService
Наследование
DatabaseFacade
Реализации
IInfrastructure<IServiceProvider> Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor IDatabaseFacadeDependenciesAccessor IResettableService

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

DatabaseFacade(DbContext)

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

Свойства

AutoSavepointsEnabled

Указывает, будет ли точка сохранения транзакции создаваться автоматически, если она вызывается после запуска транзакции вручную с BeginTransaction().SaveChanges()

AutoTransactionBehavior

Возвращает или задает значение, указывающее, будет ли автоматически создана SaveChanges() транзакция, если не были вызваны ни BeginTransaction, ни UseTransaction.

AutoTransactionsEnabled
Устаревшие..
Устаревшие..

Возвращает или задает значение, указывающее, будет ли автоматически создана SaveChanges() транзакция, если ни один из методов BeginTransaction или UseTransaction не был вызван.

CurrentTransaction

Возвращает текущий IDbContextTransaction объект, используемый контекстом, или значение NULL, если транзакция не используется.

ProviderName

Возвращает имя используемого поставщика базы данных. Обычно это имя сборки поставщика. Обычно проще использовать метод сахара, например Microsoft.EntityFrameworkCore.SqlServerDatabaseFacadeExtensions.IsSqlServer , вместо прямого вызова этого метода.

Методы

BeginTransaction()

Запускает новую транзакцию.

BeginTransactionAsync(CancellationToken)

Асинхронно запускает новую транзакцию.

CanConnect()

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

CanConnectAsync(CancellationToken)

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

CommitTransaction()

Применяет к базе данных невыполненные операции в текущей транзакции.

CommitTransactionAsync(CancellationToken)

Применяет к базе данных невыполненные операции в текущей транзакции.

CreateExecutionStrategy()

Создает экземпляр настроенного IExecutionStrategyобъекта .

EnsureCreated()

Гарантирует, что база данных для контекста существует.

EnsureCreatedAsync(CancellationToken)

Гарантирует, что база данных для контекста существует.

EnsureDeleted()

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

Предупреждение. Удаляется вся база данных, и для удаления только объектов базы данных, используемых моделью для этого контекста, не предпринимается никаких усилий.

EnsureDeletedAsync(CancellationToken)

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

Предупреждение. Удаляется вся база данных, и для удаления только объектов базы данных, используемых моделью для этого контекста, не предпринимается никаких усилий.

RollbackTransaction()

Отменяет невыполненные операции в текущей транзакции.

RollbackTransactionAsync(CancellationToken)

Отменяет невыполненные операции в текущей транзакции.

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

IDatabaseFacadeDependenciesAccessor.Context

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

IDatabaseFacadeDependenciesAccessor.Dependencies

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

IInfrastructure<IServiceProvider>.Instance

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

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

IResettableService.ResetState()

Сбрасывает службу, чтобы ее можно было использовать из пула.

IResettableService.ResetStateAsync(CancellationToken)

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

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

GetCosmosClient(DatabaseFacade)

Возвращает базовый CosmosClient объект для данного DbContextобъекта .

GetCosmosDatabaseId(DatabaseFacade)

Возвращает имя настроенной базы данных для данного DbContextобъекта .

IsCosmos(DatabaseFacade)

Возвращает значение true , если используемый в данный момент поставщик базы данных является поставщиком Cosmos.

GetInfrastructure<T>(IInfrastructure<T>)

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

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

IsInMemory(DatabaseFacade)

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

BeginTransaction(DatabaseFacade, IsolationLevel)

Запускает новую транзакцию с заданным IsolationLevel.

BeginTransactionAsync(DatabaseFacade, IsolationLevel, CancellationToken)

Асинхронно запускает новую транзакцию с заданным IsolationLevel.

CloseConnection(DatabaseFacade)

Закрывает базовый DbConnectionобъект .

CloseConnectionAsync(DatabaseFacade)

Закрывает базовый DbConnectionобъект .

ExecuteSql(DatabaseFacade, FormattableString)

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

ExecuteSqlAsync(DatabaseFacade, FormattableString, CancellationToken)

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, IEnumerable<Object>)
Устаревшие..

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

Обратите внимание, что этот метод не запускает транзакцию. Чтобы использовать этот метод с транзакцией, сначала вызовите BeginTransaction(DatabaseFacade, IsolationLevel) или UseTransaction(DatabaseFacade, DbTransaction).

Обратите внимание, что текущий ExecutionStrategy объект не используется этим методом, так как SQL может не быть идемпотентным и не выполняется в транзакции. ExecutionStrategy можно использовать явным образом, убедившись, что также используется транзакция, если SQL не является идемпотентным.

Как и в случае с любым API, который принимает SQL, важно параметризовать любые входные данные пользователя для защиты от атак путем внедрения кода SQL. Вы можете включить заполнители параметров в строку ЗАПРОСА SQL, а затем указать значения параметров в качестве дополнительных аргументов. Все значения параметров, которые вы указали, будут автоматически преобразованы в DbParameter. Вы также можете использовать ExecuteSqlInterpolated для использования синтаксиса интерполированной строки для создания параметров.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, Object[])
Устаревшие..

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

Обратите внимание, что этот метод не запускает транзакцию. Чтобы использовать этот метод с транзакцией, сначала вызовите BeginTransaction(DatabaseFacade, IsolationLevel) или UseTransaction(DatabaseFacade, DbTransaction).

Обратите внимание, что текущий ExecutionStrategy объект не используется этим методом, так как SQL может не быть идемпотентным и не выполняется в транзакции. ExecutionStrategy можно использовать явным образом, убедившись, что также используется транзакция, если SQL не является идемпотентным.

Как и в случае с любым API, который принимает SQL, важно параметризовать любые входные данные пользователя для защиты от атак путем внедрения кода SQL. Вы можете включить заполнители параметров в строку ЗАПРОСА SQL, а затем указать значения параметров в качестве дополнительных аргументов. Все значения параметров, которые вы указываете, будут автоматически преобразованы в DbParameter — context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Вы также можете использовать ExecuteSqlInterpolated для использования синтаксиса интерполированной строки для создания параметров.

ExecuteSqlCommand(DatabaseFacade, FormattableString)
Устаревшие..

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

Обратите внимание, что этот метод не запускает транзакцию. Чтобы использовать этот метод с транзакцией, сначала вызовите BeginTransaction(DatabaseFacade, IsolationLevel) или UseTransaction(DatabaseFacade, DbTransaction).

Обратите внимание, что текущий ExecutionStrategy объект не используется этим методом, так как SQL может не быть идемпотентным и не выполняется в транзакции. ExecutionStrategy можно использовать явным образом, убедившись, что также используется транзакция, если SQL не является идемпотентным.

Как и в случае с любым API, который принимает SQL, важно параметризовать любые входные данные пользователя для защиты от атак путем внедрения кода SQL. Вы можете включить заполнители параметров в строку ЗАПРОСА SQL, а затем указать значения параметров в качестве дополнительных аргументов. Все значения параметров, которые вы указываете, будут автоматически преобразованы в DbParameter — context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommand(DatabaseFacade, String, Object[])

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

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, IEnumerable<Object>, CancellationToken)
Устаревшие..

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

Обратите внимание, что этот метод не запускает транзакцию. Чтобы использовать этот метод с транзакцией, сначала вызовите BeginTransaction(DatabaseFacade, IsolationLevel) или UseTransaction(DatabaseFacade, DbTransaction).

Обратите внимание, что текущий ExecutionStrategy объект не используется этим методом, так как SQL может не быть идемпотентным и не выполняется в транзакции. ExecutionStrategy можно использовать явным образом, убедившись, что также используется транзакция, если SQL не является идемпотентным.

Как и в случае с любым API, который принимает SQL, важно параметризовать любые входные данные пользователя для защиты от атак путем внедрения кода SQL. Вы можете включить заполнители параметров в строку ЗАПРОСА SQL, а затем указать значения параметров в качестве дополнительных аргументов. Все значения параметров, которые вы указали, будут автоматически преобразованы в DbParameter. Вы также можете использовать ExecuteSqlInterpolated для использования синтаксиса интерполированной строки для создания параметров.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, Object[])
Устаревшие..

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

Обратите внимание, что этот метод не запускает транзакцию. Чтобы использовать этот метод с транзакцией, сначала вызовите BeginTransaction(DatabaseFacade, IsolationLevel) или UseTransaction(DatabaseFacade, DbTransaction).

Обратите внимание, что текущий ExecutionStrategy объект не используется этим методом, так как SQL может не быть идемпотентным и не выполняется в транзакции. ExecutionStrategy можно использовать явным образом, убедившись, что также используется транзакция, если SQL не является идемпотентным.

Как и в случае с любым API, который принимает SQL, важно параметризовать любые входные данные пользователя для защиты от атак путем внедрения кода SQL. Вы можете включить заполнители параметров в строку ЗАПРОСА SQL, а затем указать значения параметров в качестве дополнительных аргументов. Все значения параметров, которые вы указываете, будут автоматически преобразованы в DbParameter — context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Вы также можете использовать ExecuteSqlInterpolated для использования синтаксиса интерполированной строки для создания параметров.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
Устаревшие..

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

Обратите внимание, что этот метод не запускает транзакцию. Чтобы использовать этот метод с транзакцией, сначала вызовите BeginTransaction(DatabaseFacade, IsolationLevel) или UseTransaction(DatabaseFacade, DbTransaction).

Обратите внимание, что текущий ExecutionStrategy объект не используется этим методом, так как SQL не может быть идемпотентным и не выполняется в транзакции. ExecutionStrategy можно использовать явным образом, чтобы также использовать транзакцию, если SQL не является идемпотентным.

Как и в случае с любым API, который принимает SQL, важно параметризовать любые входные данные пользователя для защиты от атак путем внедрения кода SQL. Вы можете включить заполнители параметров в строку ЗАПРОСА SQL, а затем указать значения параметров в качестве дополнительных аргументов. Все указанные значения параметров будут автоматически преобразованы в DbParameter — context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm).

ExecuteSqlCommandAsync(DatabaseFacade, FormattableString, CancellationToken)
Устаревшие..

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

Обратите внимание, что этот метод не запускает транзакцию. Чтобы использовать этот метод с транзакцией, сначала вызовите BeginTransaction(DatabaseFacade, IsolationLevel) или UseTransaction(DatabaseFacade, DbTransaction).

Обратите внимание, что текущий ExecutionStrategy объект не используется этим методом, так как SQL не может быть идемпотентным и не выполняется в транзакции. ExecutionStrategy можно использовать явным образом, чтобы также использовать транзакцию, если SQL не является идемпотентным.

Как и в случае с любым API, который принимает SQL, важно параметризовать любые входные данные пользователя для защиты от атак путем внедрения кода SQL. Вы можете включить заполнители параметров в строку ЗАПРОСА SQL, а затем указать значения параметров в качестве дополнительных аргументов. Все указанные значения параметров будут автоматически преобразованы в DbParameter — context.Database.ExecuteSqlCommandAsync($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommandAsync(DatabaseFacade, String, CancellationToken, Object[])

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

ExecuteSqlInterpolated(DatabaseFacade, FormattableString)

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

ExecuteSqlInterpolatedAsync(DatabaseFacade, FormattableString, CancellationToken)

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>)

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

ExecuteSqlRaw(DatabaseFacade, String, Object[])

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

ExecuteSqlRawAsync(DatabaseFacade, String, IEnumerable<Object>, CancellationToken)

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

ExecuteSqlRawAsync(DatabaseFacade, String, Object[])

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

ExecuteSqlRawAsync(DatabaseFacade, String, CancellationToken)

Выполняет заданный SQL для базы данных и возвращает количество затронутых строк.

GenerateCreateScript(DatabaseFacade)

Создает скрипт для создания всех таблиц для текущей модели.

GetAppliedMigrations(DatabaseFacade)

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

GetAppliedMigrationsAsync(DatabaseFacade, CancellationToken)

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

GetCommandTimeout(DatabaseFacade)

Возвращает время ожидания (в секундах) для команд, выполняемых с помощью этой DbContextфункции .

GetConnectionString(DatabaseFacade)

Возвращает базовый строка подключения, настроенный для данного объекта DbContext.

GetDbConnection(DatabaseFacade)

Возвращает базовый ADO.NET DbConnection для данного DbContextобъекта .

GetMigrations(DatabaseFacade)

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

GetPendingMigrations(DatabaseFacade)

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

GetPendingMigrationsAsync(DatabaseFacade, CancellationToken)

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

HasPendingModelChanges(DatabaseFacade)

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

IsRelational(DatabaseFacade)

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

Migrate(DatabaseFacade)

Применяет все ожидающие миграции для контекста к базе данных. Создаст базу данных, если она еще не существует.

MigrateAsync(DatabaseFacade, CancellationToken)

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

OpenConnection(DatabaseFacade)

Открывает базовый DbConnectionобъект .

OpenConnectionAsync(DatabaseFacade, CancellationToken)

Открывает базовый DbConnectionобъект .

SetCommandTimeout(DatabaseFacade, Nullable<Int32>)

Задает время ожидания (в секундах), используемое для команд, выполняемых с помощью этой DbContextкоманды .

SetCommandTimeout(DatabaseFacade, TimeSpan)

Задает время ожидания, используемое для команд, выполняемых с помощью этого DbContext.

SetConnectionString(DatabaseFacade, String)

Задает базовый строка подключения, настроенный для этого DbContext.

SetDbConnection(DatabaseFacade, DbConnection, Boolean)

Задает базовый ADO.NET DbConnection для данного объекта DbContext.

SetDbConnection(DatabaseFacade, DbConnection)

Задает базовый ADO.NET DbConnection для данного объекта DbContext.

SqlQuery<TResult>(DatabaseFacade, FormattableString)

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

SqlQueryRaw<TResult>(DatabaseFacade, String, Object[])

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

UseTransaction(DatabaseFacade, DbTransaction, Guid)

Задает объект , используемый DbTransaction операциями базы данных в DbContext.

UseTransaction(DatabaseFacade, DbTransaction)

Задает объект , используемый DbTransaction операциями базы данных в DbContext.

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

Задает объект , используемый DbTransaction операциями базы данных в DbContext.

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

Задает объект , используемый DbTransaction операциями базы данных в DbContext.

IsSqlite(DatabaseFacade)

Возвращает значение true , если используемый в данный момент поставщик базы данных является поставщиком SQLite.

IsSqlServer(DatabaseFacade)

Возвращает значение true , если используемый в данный момент поставщик базы данных является поставщиком SQL Server.

EnlistTransaction(DatabaseFacade, Transaction)

Указывает существующий Transaction объект , используемый для операций с базой данных.

GetEnlistedTransaction(DatabaseFacade)

Возвращает текущую зачисленную транзакцию.

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