Xamarin Forms、Sqlite、EF Core 3、迁移和许多混乱

2023-12-29

我有一个 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,它们都已经有好几年的历史了,并且有很多工作要做。

  1. 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- 这讨论了通过添加控制台应用程序来运行迁移
  2. 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
  3. https://www.algoworks.com/blog/xamarin-forms-and-entity-framework-core/ https://www.algoworks.com/blog/xamarin-forms-and-entity-framework-core/- 给我的问题多于答案。

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

我想要实现的是:

  1. 当用户打开应用程序时,它会检查是否有数据库版本更新,或者应用程序已更新并知道它必须更新数据库。
  2. 当数据库更新时,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(使用前将#替换为@)

Xamarin Forms、Sqlite、EF Core 3、迁移和许多混乱 的相关文章

随机推荐

  • aws ec2:如何从ubuntu实例内部知道公共IP [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了一个 amazon web services 实例并使用 Ubuntu 14 04 amazon 机器映像 现在我可以 ssh 进
  • Notepad++ 崩溃后显示空值

    我正在 Notepad 中编辑保存的文件 不幸的是 我没有关闭 Notepad 应用程序 PC 由于电池电量耗尽而断电 当电源重新打开时 我打开我的文件 发现只有 nul nul nul nul nul 这是一个文本文件 我正在其中保存 x
  • 无法在 PowerShell 中将字符串转换为 int

    我正在尝试使用 PowerShell 将字符串转换为整数 然而 它不断告诉我 我没有有效的号码 尽管我确信我有 首先 这是我如何获取变量以及类型的打印输出等 以确保有效性 obj New Object TypeName PSCustomOb
  • 如何使用SQL Server 2008 Reporting Services的WebService

    我创建了一个报表并将其发布到 Report Server 2008 效果很好 我可以打电话http 服务器名称 81 报告在我的浏览器中查看并导出报告 我现在想做的是编写一个应用程序 使用该报告创建一个 Excel 文件 根据 Report
  • 如何根据第一个下拉列表的选择更新第二个下拉列表?

    我有两个 DropDownListFor 助手 第二个的 SelectList 取决于第一个助手中选择的值 因此 我需要做的是 当用户从第一个 DropDownListFor 帮助器中选择一个值时 必须使用正确的值更新第二个 DropDow
  • WPF Button.IsCancel 属性如何工作?

    取消按钮背后的基本思想是通过 Escape 按键关闭窗口 您可以设置 IsCancel 属性 取消按钮设置为 true 导致 取消按钮自动关闭 对话框不处理 Click 事件 来源 WPF 编程 Griffith 销售 所以这应该有效
  • Rails 3 中的类表继承

    我目前正在开发一个 Rails 3 应用程序 它看起来可能需要对几个模型使用类表继承 这是正在发生的事情的一个简化示例 我有一个名为 Person 的类 具有诸如姓名 电子邮件 密码之类的通用属性 这些属性对于应用程序中的所有类型的人来说都
  • Mysql 两个日期时间列之间

    我有以下代码 但它似乎没有产生预期的结果 date from 2012 04 27 18 19 33 date to 2012 05 29 00 59 57 database gt connect ancestors mysql query
  • 想要手动发送SYN ACK数据包来建立TCP连接(如果可能的话在PHP中)

    如何在 php ini 中将自己的 SYN 和 ACK 数据包发送到服务器 我不想让系统做任何事情 我想创建自己的数据包 并自己发送它们以建立 TCP 连接 这可以在 php 中完成吗 或者我是否必须使用 C 来完成此操作 或者可能是 py
  • ForwardRef 警告 React-hook-forms 与 Material UI TextField

    我正在尝试使用 React hook forms 和 Material UI 的输入构建一个表单 在本例中是我的 TextField 的自定义变体 尽管该表单似乎工作完全正常 但在渲染表单时它会在控制台中触发警告消息 警告 不能给函数组件提
  • 在开发模式之外调试 GWT 应用程序?

    我似乎记得在截屏视频中看到有人将 Java 调试器附加到已编译 部署的 GWT 应用程序 这可能吗 我发现一些关于配置一个特殊的 调试模块 来扩展常规模块的稀疏提及 但细节很少 Thanks 您可以使用开发模式来调试已部署的应用程序 但您将
  • Ipython 笔记本:导入脚本函数的名称错误

    我有两个脚本sources py and nest py 他们是这样的 来源 py import numpy as np from nest import def make source rest of the code def detec
  • 如何使当前片段保持在屏幕旋转上

    我试图在一项活动中使用 3 个片段 其中一个片段被设置为默认片段onCreate 方法和其他片段正在通过某些操作进行调用 因此当我旋转屏幕时onCreate 方法再次调用 我当前的片段丢失 默认片段再次开始 但我必须在onCreate 方法
  • 写入csv文件 - python 3.7

    在此输入图像描述 https i stack imgur com xu0F8 png在此输入图像描述 https i stack imgur com uxN1W png在此输入图像描述 https i stack imgur com 0r0
  • 日期减去秒总是返回相同的[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 echo date Y m d H m s strtotime 15 minutes ago br echo date Y m d
  • 在 Qt 中显示解码视频帧的最有效方法是什么?

    将图像显示到 Qt 小部件的最快方法是什么 我已经使用 libavformat 和 libavcodec 解码了视频 因此我已经有了原始 RGB 或 YCbCr 4 2 0 帧 我目前正在使用 QGraphicsView 和包含 QGrap
  • 如何在单击时将 href 设置为复选框?

    1 如何在单击时将 href 设置为复选框 a href Demo sense show 4 a
  • 使用 post-receive 挂钩创建 zip

    我已经玩 Hooks有一段时间了 但我似乎无法理解post receivehook 以我需要的方式工作 我正在尝试获取post receive在我将更改推送到存储库后 创建一个 zip 文件夹并将其放置在 git 存储库文件夹之外的某个位置
  • 在 emacs 中定义键绑定

    我想将 emacs 中的命令映射到键绑定 我想要命令Control l与命令具有相同的效果Alt x goto line随后是一个返回 因为该命令首先需要调用一个返回 然后是一个行号 我修改了init文件如下 define key M x
  • Xamarin Forms、Sqlite、EF Core 3、迁移和许多混乱

    我有一个 Xamarin Forms 应用程序 我已从仅使用 Restful API 切换为使用本地 SQLite DB 它将使用此进行同步Dotmim Sync 数据库同步框架 https mimetis github io Dotmim