将 MariaDB 与实体框架结合使用

2024-01-25

最近,我读到一则新闻,说 MariaDB 是 MySQL 的替代品,因为MySQL 对集群/企业版的定价不友好 http://www.theregister.co.uk/2013/09/12/google_mariadb_mysql_migration/据谷歌称。

现在我在 Google 上找不到任何与 EF for MariaDB 相关的信息,所以我希望有人知道。可以用吗MySQL 驱动程序,因为它 100% 兼容 http://www.skysql.com/content/mariadb-100-compatible-open-source-drop-replacement-mysql-database?有什么想法吗?

Update

我刚刚发现RedHat 也从 MySQL 切换到 MariaDB http://www.zdnet.com/red-hat-will-switch-from-oracle-mysql-to-mariadb-reports-7000017907/因为它是默认的数据库管理系统。所以我现在的项目有必要切换到MariaDB。


我能够将 MariaDB 10 与实体框架一起使用,尽管它需要一些工作,主要是因为 MySQL 工具有点错误。

在 Visual Studio 中使用 MySQL/MariaDB2010/2012,你需要安装用于 Visual Studio 的 MySQL http://www.mysql.com/why-mysql/windows/visualstudio/ using MySQL 安装程序 http://dev.mysql.com/downloads/installer/。我使用网络版本,因为我只想下载连接器和扩展。完成此操作后,您可以添加与 MariaDB 的连接并创建 EF 模型。

但这还不足以运行您的代码。首先,您需要使用 NuGet 添加 MySQL 连接器。

不幸的是,MySQL for Visual Studio 添加了对旧提供程序版本的引用(提到here https://stackoverflow.com/questions/18882217/mysql-connector-6-7-4-and-entity-framework-5-exceptions)并且无法加载较新的版本。为了解决这个问题,我在 app.config 中添加了以下部分:

<system.data>
   <DbProviderFactories>
     <remove invariant="MySql.Data.MySqlClient"/>
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" 
           description=".Net Framework Data Provider for MySQL" 
           type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
   </DbProviderFactories>
</system.data>

这会将旧参考替换为新参考。请注意,我使用了

<remove invariant="MySql.Data.MySqlClient"/>

not

<remove name="MySql Data Provider"/>

in the remove元素。

目前,Visual Studio 2013 不支持 MySQL for Visual Studio

更新 - 2017

Connector/.NET 基本上停滞不前,与 2013 年遇到的问题相同,例如没有真正的异步调用。 “异步”调用是假的 - 它们在单独的线程上运行,违背了使用的真正目的async。仅此一点就使其不适合 Web 应用程序,在 Web 应用程序中,人们希望使用minimum线程数/CPU。

不用担心 .NET Core 支持。

这就是为什么在过去几年里人们构建了自己的、真正的异步提供程序。一些比较流行的有:

  • MySql连接器 https://github.com/mysql-net/MySqlConnector为 .NET 提供真正的异步提供程序and.NET核心
  • Pomelo https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql在 MySQLConnector 之上提供 EF Core 支持

每个 NuGet 的下载量约为 100K,版本频繁且维护活跃。

它们不是“官方”的,但绝对值得尝试

锁定更新 - 2020 年 4 月

看来MySqlConnector 和Pomelo 真的起飞了。

Connector/.NET 终于发布了几个版本 https://www.nuget.org/packages/MySql.Data/经过近两年的最新版本 8.0.19 的使用,233K下载。

MySql连接器 https://www.nuget.org/packages/MySqlConnector/另一方面,得到496K下载版本 0.61.0。小更新很频繁,最新的 0.63.2 在本文发布前 8 小时发布。这可能有点太频繁了,但比两年好得多。

我还没有检查功能或 MySql 8 兼容性。如果我必须选择(我可能会在下周的一个项目中做出选择),我会从 MySql Connector 开始。

我怀疑 Connector/.NET 将被迫提供更频繁的更新,以跟上 .NET Core 版本的步伐,但这只是目前的猜测。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 MariaDB 与实体框架结合使用 的相关文章

随机推荐

  • 如何在进程退出之前强制 Nodejs Winston 日志记录到文件

    我在用温斯顿 3 https github com winstonjs winston记录我的数据 但有时它在进程退出之前没有记录错误 以下进程将退出 不登录logfile log const winston require winston
  • Windows x64 的串行/Com 端口监视器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 谁能推荐一些好的 Com 端口监控工具 比如 Portmon 它也可以在 Windows x64 上运行
  • 在 WordPress 站点中加载 jquery.js 后加载 javascript 代码

    我在 WordPress 网站的主页上有一个基于 jquery 的自定义滑块 我正在主题的functions php 文件中使用以下代码加载jQuery jquery js 和滑块js jquery advanced slider js f
  • Rails 3 - nil 的未定义方法“map”:NilClass 用于我自己的验证

    我遇到了很奇怪的问题 我有Timetable模型并尝试编写我的自定义验证 所以 现在我只是尝试为字段添加测试错误以确保一切正常 但这不起作用 因此 我尝试更新时间表模型的对象 但是当我不使用测试自定义验证时 一切都很完美 否则我会得到这样的
  • 将 geom_text 中的图例文本颜色与符号匹配[重复]

    这个问题在这里已经有答案了 我正在尝试将图例的文本与分解变量生成的文本的颜色进行颜色匹配geom text 这是一个最小的工作示例 df lt data frame a rnorm 10 b 1 10 c letters 1 10 d c
  • Swift 三个双引号

    我是斯威夫特的新手 该文档说 对于占用多行的字符串 请使用三个双引号 只要与结束引号的缩进相匹配 每个带引号的行开头的缩进就会被删除 例如 let quotation Even though there s whitespace to th
  • 类型错误:“list”和“int”实例之间不支持“>=”

    嗨 我遇到了上述错误 问题出在最后一个函数 get student average 上 如果 results 存储 get average student 值 为什么它不能返回 get letter grade results 的结果 ll
  • 求 pi 的值直到 50 位

    我想计算 PI 的值直到 50 位 如何在java中实现小数点后50位 您无法使用默认数据类型执行此操作 因为您需要 50 位数字 50 log 2 log 10 166 位 这里 BigDecimal 是您可以使用的一种类型 但您应该记住
  • nil 的 Ruby 用例,相当于 Python None 或 JavaScript undefined

    鲁比的怎么样nil体现在代码中 例如 在 Python 中 当默认参数引用另一个参数时 您可以使用 None 作为默认参数 但在 Ruby 中 您可以引用 arg 列表中的其他参数 请参阅这个问题 https stackoverflow c
  • npm 发布 - 从 package.json 中删除脚本?

    在发布我的脚本之前 我在 package json 下有许多脚本来编译咖啡脚本 打字稿和仅限开发人员的命令 一旦发布就没有任何意义 我想知道是否有删除 package json 下某些脚本的程序 考虑到在发布包时 它也会发布 package
  • 在 Matter.js 中旋转相机

    我正在开发一款以太空为背景的自上而下的物理游戏 我希望旋转到视图时始终显示玩家的船朝上 即使船可以旋转 我搜索了文档 但没有找到任何有关旋转世界或渲染器的信息 但我可能不知道要查找的正确术语 这对于 Matter js 来说是可能的吗 我不
  • 使用 ng-template 在 Angular 10 中仅显示博客中的相关条目

    我有一个用 Strapi 制作的博客后端 您可以在其中添加一些内容类型 例如标题字段 描述字段和内容字段 我还有一个布尔内容类型来设置博客是否相关 我在 Angular 中设置了一个 ngFor 来显示我所有的博客条目 但我只想展示相关的内
  • 为什么不同 Android 版本的 apk 大小会增加

    我创建了一个简单的应用程序 由 android studio 生成的 apk 大小为 1 MB 然后我安装在android 2 3版本大小增加到3 48 MB 然后我安装在android 5 0版本大小增加至 5 48 MB 我的问题只是为
  • socket.error:[errno 99] 无法分配请求的地址:flask 和 python

    我有同样的问题 and here https stackoverflow com questions 19246103 socket errorerrno 99 cannot assign requested address and nam
  • 单向来源困境

    我在用OneWayToSource绑定 它似乎总是将我的源属性设置为 null 为什么会这样 这给我带来了麻烦 因为我需要源属性中目标属性的值而不是 null 这是我的代码 MyViewModel cs public class MyVie
  • 使用 Aeson 解析嵌套 JSON 中的数组

    我正在尝试写一个FromJSON埃森的功能 JSON total 1 movies id 771315522 title Harry Potter and the Philosophers Stone Wizard s Collection
  • 在Android中使用notifyItemRemoved或notifyDataSetChanged与RecyclerView

    我正在创建一个要使用 RecyclerView 显示的卡片列表 其中每张卡片都有一个用于从列表中删除该卡片的按钮 当我使用通知项目已删除 要删除 RecyclerView 中的卡片 它会删除该项目并进行良好的动画处理 但列表中的数据未正确更
  • 在 PyYAML 中格式化自定义类输出

    我正在这里研究一个简单的示例 但文档仍然让我有点困惑 这是示例代码 class A yaml YAMLObject yaml tag u A def init self val self val val if name main t dat
  • XamlParseException:自定义控件中的属性丢失,但已定义!

    I 有时我的自定义控件出现以下异常 XamlParseException occurred Unknown attribute Points in element SectionClickableArea Line 10 Position
  • 将 MariaDB 与实体框架结合使用

    最近 我读到一则新闻 说 MariaDB 是 MySQL 的替代品 因为MySQL 对集群 企业版的定价不友好 http www theregister co uk 2013 09 12 google mariadb mysql migra