DatabaseFacade.EnsureCreatedAsync(CancellationToken) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
确保上下文的数据库存在。
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
等待任务完成时观察的 A CancellationToken 。
返回
表示异步保存操作的任务。 任务结果包含 true 是否已创建数据库( false 如果已存在)。
- 特性
例外
如果取消了该操作 CancellationToken 。
注解
- 如果数据库存在且具有任何表,则不执行任何操作。 不执行任何操作,以确保数据库架构与 Entity Framework 模型兼容。
- 如果数据库存在但没有任何表,则 Entity Framework 模型用于创建数据库架构。
- 如果数据库不存在,则会创建数据库,并使用 Entity Framework 模型创建数据库架构。
使用 Entity Framework 进行测试或原型制作时,通常会立即EnsureDeletedAsync(CancellationToken)使用EnsureCreatedAsync(CancellationToken)。 这可确保数据库在每次执行测试/原型之前处于干净状态。 但是,请注意,数据库中的数据不会保留。
请注意,此 API 不使用迁移来创建数据库。 此外,以后无法使用迁移更新创建的数据库。 如果以关系数据库为目标并使用迁移,则可以用于 Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.MigrateAsync 确保数据库是使用迁移创建的,并且所有迁移都已应用。
Entity Framework Core不支持在同一 DbContext 实例上运行多个并行操作。 这包括异步查询的并行执行以及从多个线程进行的任何显式并发使用。 因此,请始终立即等待异步调用,或者对并行执行的操作使用单独的 DbContext 实例。 有关详细信息和示例,请参阅 避免 DbContext 线程问题 。
有关详细信息和示例,请参阅 使用 EF Core 和 数据库创建 API 管理数据库 架构。