建立及卸除 API
EnsureCreated()和 EnsureDeleted() 方法提供移轉 的 輕量型替代方案,用於管理資料庫架構。 這些方法在資料是暫時性的案例中很有用,而且可以在架構變更時卸載。 例如,在原型設計、測試中,或本機快取。
某些提供者(尤其是非關聯式提供者)不支援移轉。 針對這些提供者, EnsureCreated
通常是初始化資料庫架構的最簡單方式。
警告
EnsureCreated
和 移轉無法一起運作良好。 如果您使用移轉,請勿使用 EnsureCreated
來初始化架構。
從 EnsureCreated
轉換至移轉不是順暢的體驗。 最簡單的方法是卸載資料庫,並使用移轉重新建立資料庫。 如果您預期未來使用移轉,最好從移轉開始,而不是使用 EnsureCreated
。
EnsureDeleted
如果資料庫存在,方法 EnsureDeleted
將會卸載資料庫。 如果您沒有適當的許可權,則會擲回例外狀況。
// Drop the database if it exists
dbContext.Database.EnsureDeleted();
EnsureCreated
EnsureCreated
如果資料庫不存在,則會建立資料庫,並初始化資料庫架構。 如果有任何資料表存在(包括另一個 DbContext
類別的資料表),則不會初始化架構。
// Create the database if it doesn't exist
dbContext.Database.EnsureCreated();
提示
這些方法的非同步版本也可供使用。
SQL 腳本
若要取得 所使用的 EnsureCreated
SQL,您可以使用 GenerateCreateScript 方法。
var sql = dbContext.Database.GenerateCreateScript();
多個 DbCoNtext 類別
EnsureCreated 只有在資料庫中沒有資料表時,才能運作。 如有需要,您可以撰寫自己的檢查,以查看架構是否需要初始化,並使用基礎 IRelationalDatabaseCreator 服務來初始化架構。
// TODO: Check whether the schema needs to be initialized
// Initialize the schema for this DbContext
var databaseCreator = dbContext.GetService<IRelationalDatabaseCreator>();
databaseCreator.CreateTables();