sqlite - Xamarin Forms、Sqlite、EF Core 3、迁移和很多困惑

标签 sqlite xamarin.forms entity-framework-core database-migration ef-core-3.0

我有一个 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 - 这个地址是 点网 Cli 工具引用 .我试过这个并得到错误,但它也是 EF Core 1.1
  • https://www.algoworks.com/blog/xamarin-forms-and-entity-framework-core/ - 给了我更多的问题然后回答。

  • 还有更多的链接,但我,这些证明了我对所有不同方法的观点。

    我想要实现的是:
  • 当用户打开应用程序时,它会检查是否有数据库版本更新,或者应用程序已更新并知道它必须更新数据库。
  • 当有数据库更新时,Dotmim.Sync 框架由 Provisioning and Deprovisioning 控制客户端上的数据库(Xamarin Forms)。这提供了运行 EFCore 迁移或 SQL Sricpts 来更新 SQLite 存储的机会。

  • 选项 1
    我想采用 EF Core 迁移路径,因为主数据库已使用迁移更新,应用程序将能够利用相同的脚本。如果在运行时在 Xamarin 表单上运行迁移是可能的,那就太好了。

    第一季度 . EF Core 是否可以在运行时在 Xamarin Forms 应用程序中运行 mirgations,就像在 .netcore/netframework 项目中一样?

    选项 2
    如果运行脚本需要是很好的路径,我已经探索过,这意味着我需要能够与 SQLite 模式进行比较 Tool 1tool 2 ,我在 SQLite db3 上尝试了工具之一,但它出错了。除非未经验证,否则不愿意为工具 2 付费。

    Q2 .是否有 SQLite 比较工具来生成架构更改?

    Q3 .或者客户端上部署的sqlite的数据库更新路径是什么,那会更好,即删除数据库并重新创建它?然后重新同步数据库,以加载回所有用户特定的数据。丢失数据的可能性很小,应用程序中的同步逻辑会很频繁,不确定在每个用户数据更改事件之后,但如果我们需要确保服务器永远不会不同步,则可能。

    我希望我说清楚了。谢谢

    最佳答案

    您需要创建 the dummy console app如前所述。以下是 installing the tools 的说明.之后,normal Migrations workflow应该在 Xamarin 上工作(如果没有,请确保 let us know)。

    Add-Migration MyMigration -P MyNetStandardClassLibrary -S DummyNetCoreApp
    

    您可以使用此方法在运行时应用迁移:

    myDbContext.Database.Migrate();
    

    关于sqlite - Xamarin Forms、Sqlite、EF Core 3、迁移和很多困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60568312/

    相关文章:

    c# - 如何从 Xamarin 中的按钮中删除颜色?

    c# - 如何在EF Core Code First中创建枚举对应的表?

    c# - revEng 命令现在需要提供程序。应该通过什么?

    java - 导出和导入 SQLite 数据库

    android - Xamarin.Forms 的带有 header 的 ListView (LongListSelector)

    sql - 访问 View 中子查询中的值

    xamarin - 如何在 Grid Xamarin.Form 中合并 Grid.Column

    asp.net - 在单独的 Docker 容器中使用数据库时添加迁移会引发错误

    java - 没有这样的表 - 在 SQLite Android 中插入值时出错

    ruby-on-rails - 我可以找到所有值,例如[[_bc],​​“a_c”,“ab_”]