【发布时间】:2020-06-19 10:33:19
【问题描述】:
我有一个 Xamarin Forms 应用程序,我已从仅使用 restful API 切换到使用本地 SQLite DB,它将使用此 Dotmim.Sync - DB Sync'ing Framework 进行同步(太棒了!)。我在 Xamarin 表单项目中使用 EF Core 3 与 SQLite 进行交互。
我的问题是关于在 SQLite 上运行迁移或数据库更新。我已经阅读了几个关于不同方法的博客和论坛,但它们都有几年的历史,从 EF Core 1 到 EF Core 2,还有很多工作要做。
- https://forums.xamarin.com/discussion/101805/xamarin-android-entity-framework-core-2-and-migrations - 讨论通过添加控制台应用程序运行迁移
- https://medium.com/@yostane/entity-framework-core-and-sqlite-database-migration-using-vs2017-macos-28812c64e7ef - 此添加是 Dot Net Cli 工具参考。我尝试了这个并得到了错误,但它也是 EF Core 1.1
- https://www.algoworks.com/blog/xamarin-forms-and-entity-framework-core/ - 给了我更多的问题然后是答案。
还有更多链接,但我,这些都证明了我对所采取的所有不同方法的观点。
我想要实现的是:
- 当用户打开应用程序时,它会检查是否有数据库版本更新,或者应用程序更新并知道它必须更新数据库。
- 当有数据库更新时,Dotmim.Sync 框架将控制 Provisioning and Deprovisioning 客户端上的数据库 (Xamarin Forms)。这提供了运行 EFCore Migrations 或 SQL Sricpts 来更新 SQLite 存储的机会。
选项 1 我想走 EF Core 迁移路径,因为主数据库已使用迁移进行更新,所以该应用程序将能够利用相同的脚本。如果可以在运行时在 Xamarin 表单上运行迁移,那就太好了。
第一季度。 EF Core 能否在运行时在 Xamarin Forms 应用程序中运行迁移,就像在 .netcore/netframework 项目中一样?
选项 2 如果运行脚本需要是很好的路径,我已经探索过,这意味着我需要能够将 SQLite 模式比较 Tool 1 和 tool 2,我在 SQLite db3 上尝试了工具之一,但它出错了。除非未经验证,否则不愿意为工具 2 付费。
第二季度。是否有用于生成架构更改的 SQLite 比较工具?
第三季度。或者部署在客户端上的 sqlite 的数据库更新路径是什么,这会更好,即删除数据库并重新创建它?然后重新同步数据库,以加载所有用户特定的数据。丢失数据的可能性很小,App 中的同步逻辑会很频繁,在每次用户数据更改事件之后不确定,但如果我们需要确保服务器永远不会不同步,则可能。
我希望我说清楚了。谢谢
【问题讨论】:
标签: sqlite xamarin.forms entity-framework-core database-migration ef-core-3.0