我能够将 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 版本的步伐,但这只是目前的猜测。