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
我是 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