SQLite 代码优先 ngModelChange 如何从数据库中保留旧数据

SQLite code-first onModelCahnge how to keep the old data from databse

我是 Sqlite 和 EF 的新手。

我用一些模型 classes 创建了一个 DbContext,它将在应用程序启动时创建一个本地数据库。数据库将在应用 运行ning.

时更新

当我更改模型中的某些内容(例如:将新 属性 添加到 class)和 运行 应用程序时,整个数据库将从头开始重新创建。所以我丢失了我保存的数据。

如何在模型更改时保留旧数据。

例如:

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

当我将新道具添加到 table1 class 时,它会用空数据重新创建 table,如果可能的话我需要这样的东西。

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

数据库初始化程序导致在模型更改时重新创建数据库。因此,您可以通过将其设置为 null 来禁用初始化程序:

Database.SetInitializer<MyContext>(null);

这当然意味着您需要手动使您的数据库与模型匹配。另一种选择是使用不会删除和创建数据库的初始化程序。看起来这里有一个 SqlLite 项目:https://github.com/msallin/SQLiteCodeFirst 那么你可以使用 SqliteCreateDatabaseIfNotExists。

最后,您可以使用迁移。看起来不像开箱即用的支持,因此您需要第三方工具。 Entity Framework MigrationSqlGenerator for SQLite