2016-01-22 82 views
0

我是Sqlite和EF的新手。SQLite code-first onModelCahnge如何保留數據庫中的舊數據

我用一些模型類創建了一個DbContext,它將在應用程序啓動時創建一個本地數據庫。數據庫將在應用程序運行時更新。

當我改變模型中的東西(例如:添加新屬性到類)並運行應用程序時,整個數據庫正在從頭開始重新創建。所以我丟失了我保存的數據。

即使模型更改,我如何保留舊數據。

對於防爆:

Database.table1 
ID | Name 
1 | abc 
2 | xyz 

當我新的道具添加到表1類,它的數據爲空,在那裏我需要這樣的事情如果可能的話再創造表。

Database.table1 
ID | Name | NewProp 
1 | abc | Null 
2 | xyz | Null 

回答

1

數據庫初始值設定項是導致數據庫在模型更改時重新創建的原因。所以,你可以將其設置爲空禁用初始化:

Database.SetInitializer<MyContext>(null); 

當然,這意味着你將需要手動進行數據庫匹配模型。另一種選擇是使用不會刪除並創建數據庫的初始化程序。看起來這裏有一個SqlLite項目:https://github.com/msallin/SQLiteCodeFirst那麼你可以使用SqliteCreateDatabaseIfNotExists。

最後,您可以使用遷移。看起來不是那樣的支持,所以你需要一個第三方工具。 Entity Framework MigrationSqlGenerator for SQLite

+0

謝謝你的詳細解答。所以我試圖創建自定義初始化器使用'SQLite.CodeFirst'源代碼進行遷移。如果轉換不好,我會轉到SQL CE。 – Jag

相關問題