Database - класс
[Эта страница относится к документации к Entity Framework 6. Последняя версия доступна в составе пакета Entity Framework NuGet. Дополнительные сведения об Entity Framework см. в разделе msdn.com/data/ef.]
Экземпляр этого класса получается из объекта DbContext и может быть использован для управления фактической базой данных, поддерживающей объект DbContext или соединение. В частности, поддерживается создание, удаление и проверка наличия базы данных. Обратите внимание, что удаление и проверку существования базы данных можно выполнять с помощью одного соединения (т. е. без полного контекста) посредством статических методов этого класса.
Иерархия наследования
System.Object
System.Data.Entity.Database
Пространство имен: System.Data.Entity
Сборка: EntityFramework (в EntityFramework.dll)
Синтаксис
'Декларация
<SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification := "The DbContextTransaction and EntityTransaction should never be disposed by this class")> _
Public Class Database
'Применение
Dim instance As Database
[SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "The DbContextTransaction and EntityTransaction should never be disposed by this class")]
public class Database
[SuppressMessageAttribute(L"Microsoft.Design", L"CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = L"The DbContextTransaction and EntityTransaction should never be disposed by this class")]
public ref class Database
[<SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "The DbContextTransaction and EntityTransaction should never be disposed by this class")>]
type Database = class end
public class Database
Тип Database предоставляет следующие члены.
Свойства
Имя | Описание | |
---|---|---|
CommandTimeout | Возвращает или задает значение времени ожидания (в секундах) для всех операций контекста.Заданное по умолчанию значение NULL указывает, что будет использоваться значение по умолчанию базового поставщика. | |
Connection | Возвращает соединение, используемое данным контекстом.Это может привести к созданию соединения, если оно еще не установлено. | |
CurrentTransaction | Возвращает транзакцию, в которой указано основное подключение к хранилищу.Может иметь значение null. | |
DefaultConnectionFactory | Устаревшее. Фабрика соединений, используемая при создании объекта DbConnection из имени базы данных или строки подключения. | |
Log | Задайте это свойство для регистрации SQL, созданного DbContext для заданного делегата.Например, чтобы войти на консоль, задайте для этого свойства значение Write(String). |
По верхнему краю
Методы
Имя | Описание | |
---|---|---|
BeginTransaction() | Запускает транзакцию в основном подключении хранилища | |
BeginTransaction(IsolationLevel) | Запускает транзакцию в основном подключении хранилища, используя указанный уровень изоляции | |
CompatibleWithModel | Проверяет, совместима ли база данных с текущей моделью Code First. | |
Create | Создает новую базу данных на сервере базы данных для модели, определенной в поддерживающем контексте.Учтите, что вызов этого метода до выполнения стратегии инициализации базы данных не позволит в дальнейшем выполнить эту стратегию. | |
CreateIfNotExists | Создает новую базу данных на сервере базы данных для модели, определенной в поддерживающем контексте, но только если на сервере пока не имеется базы данных с тем же именем. | |
Delete() | Удаляет базу данных с сервера базы данных, если она существует. В противном случае не делает ничего.Вызов этого метода вне инициализатора помечает базу данных как неинициализированную.Это означает, что при повторной попытке использования базы данных после ее удаления любой установленный инициализатор запустится снова и, скорее всего, попытается снова автоматически создать базу данных. | |
Delete(DbConnection) | Удаляет базу данных с сервера базы данных, если она существует. В противном случае не делает ничего. | |
Delete(String) | Удаляет базу данных с сервера базы данных, если она существует. В противном случае не делает ничего.Соединение с базой данных создается при помощи имени базы данных или строки подключения способом, описанным в документации по классу DbContext. | |
Equals | Определяет, равна ли заданная база данных текущей. (Переопределяет Object.Equals(Object).) | |
ExecuteSqlCommand(String, Object[]) | Выполняет указанную команду DDL/DML применительно к базе данных.Как и для любого API, принимающего SQL, важно параметризовать все пользовательские входные данные для защиты от атаки путем внедрения кода SQL.Можно включать в строку SQL-запроса местозаполнители параметров и затем предоставлять значения параметров как дополнительные аргументы.Все предоставляемые значения параметров будут автоматически преобразовываться в DbParameter.context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); также можно создать DbParameter и предоставить его в SqlQuery.Это позволяет использовать в строке запроса SQL именованные параметры.context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommand(TransactionalBehavior, String, Object[]) | Выполняет указанную команду DDL/DML применительно к базе данных.Как и для любого API, принимающего SQL, важно параметризовать все пользовательские входные данные для защиты от атаки путем внедрения кода SQL.Можно включать в строку SQL-запроса местозаполнители параметров и затем предоставлять значения параметров как дополнительные аргументы.Все предоставляемые значения параметров будут автоматически преобразовываться в DbParameter.context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); также можно создать DbParameter и предоставить его в SqlQuery.Это позволяет использовать в строке запроса SQL именованные параметры.context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommandAsync(String, Object[]) | Асинхронно выполняет указанную команду DDL/DML применительно к базе данных.Как и для любого API, принимающего SQL, важно параметризовать все пользовательские входные данные для защиты от атаки путем внедрения кода SQL.Можно включать в строку SQL-запроса местозаполнители параметров и затем предоставлять значения параметров как дополнительные аргументы.Все предоставляемые значения параметров будут автоматически преобразовываться в DbParameter.context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); также можно создать DbParameter и предоставить его в SqlQuery.Это позволяет использовать в строке запроса SQL именованные параметры.context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommandAsync(String, CancellationToken, Object[]) | Асинхронно выполняет указанную команду DDL/DML применительно к базе данных.Как и для любого API, принимающего SQL, важно параметризовать все пользовательские входные данные для защиты от атаки путем внедрения кода SQL.Можно включать в строку SQL-запроса местозаполнители параметров и затем предоставлять значения параметров как дополнительные аргументы.Все предоставляемые значения параметров будут автоматически преобразовываться в DbParameter.context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); также можно создать DbParameter и предоставить его в SqlQuery.Это позволяет использовать в строке запроса SQL именованные параметры.context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommandAsync(TransactionalBehavior, String, Object[]) | Асинхронно выполняет указанную команду DDL/DML применительно к базе данных.Как и для любого API, принимающего SQL, важно параметризовать все пользовательские входные данные для защиты от атаки путем внедрения кода SQL.Можно включать в строку SQL-запроса местозаполнители параметров и затем предоставлять значения параметров как дополнительные аргументы.Все предоставляемые значения параметров будут автоматически преобразовываться в DbParameter.context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); также можно создать DbParameter и предоставить его в SqlQuery.Это позволяет использовать в строке запроса SQL именованные параметры.context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommandAsync(TransactionalBehavior, String, CancellationToken, Object[]) | Асинхронно выполняет указанную команду DDL/DML применительно к базе данных.Как и для любого API, принимающего SQL, важно параметризовать все пользовательские входные данные для защиты от атаки путем внедрения кода SQL.Можно включать в строку SQL-запроса местозаполнители параметров и затем предоставлять значения параметров как дополнительные аргументы.Все предоставляемые значения параметров будут автоматически преобразовываться в DbParameter.context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); также можно создать DbParameter и предоставить его в SqlQuery.Это позволяет использовать в строке запроса SQL именованные параметры.context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
Exists() | Проверяет, существует ли на сервере база данных. | |
Exists(DbConnection) | Проверяет, существует ли на сервере база данных. | |
Exists(String) | Проверяет, существует ли на сервере база данных.Соединение с базой данных создается при помощи имени базы данных или строки подключения способом, описанным в документации по классу DbContext. | |
Finalize | (Унаследовано от Object.) | |
GetHashCode | Возвращает хэш-функцию для этой базы данных. (Переопределяет Object.GetHashCode().) | |
GetType | Возвращает объект Type для текущего экземпляра. | |
Initialize | Запускает интерфейс IDatabaseInitializer<TContext>, зарегистрированный в данном контексте.Если параметр «force» имеет значение true, инициализатор запускается независимо от того, запускался ли он уже прежде.Это может оказаться полезным, если база данных была удалена во время выполнения приложения и должна быть повторно инициализирована.Если параметр «force» имеет значение false, инициализатор выполняется, только если не выполнялся ранее для этого контекста, модели и соединения в данном домене приложения.Этот метод обычно используется, если необходимо гарантировать создание базы данных и ее заполнение первоначальными данными до запуска определенной операции (при этом необходима быстрая реакция), например если операция является частью транзакции. | |
MemberwiseClone | (Унаследовано от Object.) | |
SetInitializer<TContext> | Устанавливает инициализатор базы данных для данного типа контекста.Инициализатор базы данных вызывается, когда заданный тип DbContext используется для доступа к базе данных в первый раз.Стратегией по умолчанию для контекстов Code First является экземпляр CreateDatabaseIfNotExists<TContext>. | |
SqlQuery(Type, String, Object[]) | Создает необработанный SQL-запрос, возвращающий элементы заданного типа.Типом может быть любой тип, содержащий свойства, совпадающие с именами столбцов, возвращаемых запросом, либо простой тип-примитив.Тип не обязательно должен быть типом сущности.Результаты этого запроса никогда не отслеживаются контекстом, даже если возвращаемый объект имеет тип сущности.Используйте метод SqlQuery(String, Object[]) для возврата сущностей, отслеживаемых контекстом.Как и для любого API, принимающего SQL, важно параметризовать все пользовательские входные данные для защиты от атаки путем внедрения кода SQL.Можно включать в строку SQL-запроса местозаполнители параметров и затем предоставлять значения параметров как дополнительные аргументы.Все предоставляемые значения параметров будут автоматически преобразовываться в DbParameter.context.Database.SqlQuery(typeof(Post), "SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor); также можно создать DbParameter и предоставить его в SqlQuery.Это позволяет использовать в строке запроса SQL именованные параметры.context.Database.SqlQuery(typeof(Post), "SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
SqlQuery<TElement>(String, Object[]) | Создает необработанный SQL-запрос, возвращающий элементы заданного универсального типа.Типом может быть любой тип, содержащий свойства, совпадающие с именами столбцов, возвращаемых запросом, либо простой тип-примитив.Тип не обязательно должен быть типом сущности.Результаты этого запроса никогда не отслеживаются контекстом, даже если возвращаемый объект имеет тип сущности.Используйте метод SqlQuery(String, Object[]) для возврата сущностей, отслеживаемых контекстом.Как и для любого API, принимающего SQL, важно параметризовать все пользовательские входные данные для защиты от атаки путем внедрения кода SQL.Можно включать в строку SQL-запроса местозаполнители параметров и затем предоставлять значения параметров как дополнительные аргументы.Все предоставляемые значения параметров будут автоматически преобразовываться в DbParameter.context.Database.SqlQuery&lt;Post&gt;("SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor); также можно создать DbParameter и передать его в SqlQuery.Это позволяет использовать в строке запроса SQL именованные параметры.context.Database.SqlQuery&lt;Post&gt;("SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ToString | Возвращает строковое представление базы данных. (Переопределяет Object.ToString().) | |
UseTransaction | Позволяет передавать в базу данных транзакции, созданные за пределами объекта Database, если необходимо выполнять команды Entity Framework в пределах этой внешней транзакции.Также можно передавать значения NULL для очистки набора знаний платформы .NET Framework этой транзакции. |
По верхнему краю
Потокобезопасность
Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасная работа с членами экземпляров типа не гарантируется.