如果應用程序重新安裝,是否可以刪除應用程序的數據庫?實體框架:重新安裝應用程序時刪除數據庫
編輯: 客戶希望每次安裝新版本的應用程序時都要「清除」數據庫。 DropCreateDatabaseIfModelChanges不會削減它,因爲它們可能會安裝/重新安裝應用程序而不更改模型。
如果應用程序重新安裝,是否可以刪除應用程序的數據庫?實體框架:重新安裝應用程序時刪除數據庫
編輯: 客戶希望每次安裝新版本的應用程序時都要「清除」數據庫。 DropCreateDatabaseIfModelChanges不會削減它,因爲它們可能會安裝/重新安裝應用程序而不更改模型。
您可以使用Database SetInitializer靜態成員和所需的參數。如果沒有數據庫,則創建示例。
public class YourDbContext : DbContext
{
public YourDbContext(): base("yourConnectionString")
{
Database.SetInitializer<YourDbContext>(new CreateDatabaseIfNotExists<YourDbContext>());
}
}
如果你使用的是安裝程序(MSI,例如)你需要更新添加自定義操作,反安裝或重新安裝刪除數據庫事件。
其他的解決辦法是將其添加到主代碼:
if (IsVersionChanged()) {
if (Database.Exists(...)) { Database.Drop(...); }
}
但它並沒有解決重新安裝的情況下(您可以嘗試通過分析應始終覆蓋一個文件的時間戳來檢測這種情況下,在安裝/重新安裝時,但如果你沒有安裝程序,這是唯一值得的)。
有幾種方法可以實現IsVersionChanged。例如,您可以將版本保留在數據庫本身中,或將最新版本保存在Windows註冊表中。
謝謝!我會嘗試你的解決方案。 –
你能否讓這個問題更具體,並描述你需要什麼? – Vladimir
重新安裝是什麼意思?如果模型改變了? – Thomas
需要更多的見解。你爲什麼要放棄數據庫?你會失去以前的數據。想想應用程序升級。將db刪除的代價太高;) – Tushar