我有一个 Xamarin Forms 应用程序,我已从仅使用 Restful API 切换为使用本地 SQLite DB,它将使用此进行同步Dotmim.Sync - 数据库同步框架 https://mimetis.github.io/Dotmim.Sync/(这太棒了!)。我在 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://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 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/ https://www.algoworks.com/blog/xamarin-forms-and-entity-framework-core/- 给我的问题多于答案。
还有更多链接,但我,这些证明了我所采取的所有不同方法的观点。
我想要实现的是:
- 当用户打开应用程序时,它会检查是否有数据库版本更新,或者应用程序已更新并知道它必须更新数据库。
- 当数据库更新时,Dotmim.Sync Framework 负责控制配置和取消配置 https://mimetis.github.io/Dotmim.Sync/Provision客户端上的数据库(Xamarin Forms)。这提供了运行 EFCore Migrations 或 SQL Sricpts 来更新 SQLite 存储的机会。
Option 1我想走 EF Core 迁移路径,因为主数据库是通过迁移更新的,应用程序将能够利用相同的脚本。如果可以在运行时在 Xamarin 表单上运行迁移,那就太好了。
Q1。 EF Core 是否可以在运行时在 Xamarin Forms 应用程序中运行迁移,就像在 .netcore/netframework 项目中一样?
Option 2如果运行脚本需要成为路径,那很好,我已经探索过,这意味着我需要能够比较 SQLite 模式Tool 1 https://www.codeproject.com/articles/220018/sqlite-compare-utility and tool 2 http://www.fmpromigrator.com/products/sqlite_diff/index.html,我在 SQLite db3 上尝试了工具一,但出现错误。不愿意为工具 2 付费,除非未经验证它可以工作。
Q2。是否有 SQLite 比较工具来生成架构更改?
Q3。或者部署在客户端上的 sqlite 的数据库更新路径是什么,这会更好,即删除数据库并重新创建它?然后重新同步数据库,以加载所有用户特定数据。丢失数据的可能性很小,应用程序中的同步逻辑会很频繁,不确定在每次用户数据更改事件之后,但如果我们需要确保服务器永远不会不同步,则可能会发生。
我希望我已经说清楚了。谢谢
你需要创建虚拟控制台应用程序 https://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell#other-target-frameworks如上所述。以下是说明安装工具 https://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell#other-versions-and-project-types。之后,正常迁移工作流程 https://learn.microsoft.com/ef/core/managing-schemas/migrations/应该在 Xamarin 上工作(请务必让我们知道 https://github.com/dotnet/efcore/issues/new/choose如果没有)。
Add-Migration MyMigration -P MyNetStandardClassLibrary -S DummyNetCoreApp
您可以使用此方法在运行时应用迁移:
myDbContext.Database.Migrate();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)