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


DatabaseFacade.EnsureCreatedAsync(CancellationToken) Метод

Определение

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

public virtual System.Threading.Tasks.Task<bool> EnsureCreatedAsync (System.Threading.CancellationToken cancellationToken = default);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Migrations operations require building the design-time model which is not supported with NativeAOT Use a migration bundle or an alternate way of executing migration operations.")]
public virtual System.Threading.Tasks.Task<bool> EnsureCreatedAsync (System.Threading.CancellationToken cancellationToken = default);
abstract member EnsureCreatedAsync : System.Threading.CancellationToken -> System.Threading.Tasks.Task<bool>
override this.EnsureCreatedAsync : System.Threading.CancellationToken -> System.Threading.Tasks.Task<bool>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Migrations operations require building the design-time model which is not supported with NativeAOT Use a migration bundle or an alternate way of executing migration operations.")>]
abstract member EnsureCreatedAsync : System.Threading.CancellationToken -> System.Threading.Tasks.Task<bool>
override this.EnsureCreatedAsync : System.Threading.CancellationToken -> System.Threading.Tasks.Task<bool>
Public Overridable Function EnsureCreatedAsync (Optional cancellationToken As CancellationToken = Nothing) As Task(Of Boolean)

Параметры

cancellationToken
CancellationToken

Объект для CancellationToken наблюдения во время ожидания завершения задачи.

Возвращаемое значение

Задача, представляющая асинхронную операцию сохранения. Результат задачи содержит true значение , если база данных создана, false если она уже существует.

Атрибуты

Исключения

Если CancellationToken отменяется.

Комментарии

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

При тестировании или создании прототипов с помощью Entity Framework обычно используется EnsureCreatedAsync(CancellationToken) сразу после EnsureDeletedAsync(CancellationToken) . Это гарантирует, что база данных находится в чистом состоянии перед каждым выполнением теста или прототипа. Однако обратите внимание, что данные в базе данных не сохраняются.

Обратите внимание, что этот API **not** использует миграции для создания базы данных. Кроме того, созданную базу данных нельзя позже обновить с помощью миграций. Если вы используете реляционную базу данных и используете миграции, то можно использовать , Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.MigrateAsync чтобы убедиться, что база данных создана с помощью миграций и что все миграции были применены.

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

Дополнительные сведения и примеры см. в разделах Управление схемами баз данных с помощью EF Core и API создания базы данных .

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