将MariaDB与实体框架结合使用

Chr*_*ark 23 c# mysql entity-framework mariadb

最近,我读到一则消息称MariaDB是MySQL的替代品,因为根据谷歌,MySQL 对集群/企业版的价格不友好.

现在我在Google上找不到与MariaDB相关的任何内容,所以我希望有人知道.是否可以使用MySQL驱动程序,因为它是100%兼容的?有什么想法吗?

更新

我刚刚发现RedHat也是从MySQL切换到MariaDB的默认数据库管理系统.因此,我当前的项目必须将其切换到MariaDB.

Pan*_*vos 11

我能够将MariaDB 10与Entity Framework一起使用,虽然它需要一些工作,主要是因为MySQL工具有点儿麻烦.

要在Visual Studio 2010/2012中使用MySQL/MariaDB ,您需要使用MySQL Installer 为Visual Studio安装MySQL.我使用Web版本,因为我只想下载连接器和扩展.完成此操作后,您可以添加与MariaDB的连接并创建EF模型.

这不足以运行您的代码.首先,您需要使用NuGet添加MySQL Connector.

不幸的是,MySQL for Visual Studio添加了对旧版提供程序版本的引用(此处提到),无法加载较新版本.为了解决这个问题,我在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>
Run Code Online (Sandbox Code Playgroud)

这将使用新引用替换旧引用.请注意,我用过

<remove invariant="MySql.Data.MySqlClient"/>
Run Code Online (Sandbox Code Playgroud)

<remove name="MySql Data Provider"/>
Run Code Online (Sandbox Code Playgroud)

remove元素中.

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

更新 - 2017年

Connector/.NET基本上停滞不前,与2013年的问题相同,例如没有真正的异步调用."异步"调用是假的 - 它们在不同的线程上运行,从而破坏了使用的目的async.仅这一点使它不适合Web应用程序,其中人们希望使用最少数量的线程/ CPU 来尽可能多地请求服务器.

别介意.NET Core支持.

这就是为什么在过去的几年里人们已经建立了自己的,真正异步的提供商.一些比较流行的是:

  • MySqlConnector为.NET .NET Core 提供了真正的异步提供程序
  • Pomelo在MySQLConnector之上提供EF Core支持

每个NuGet大约下载100K,频繁版本和主动维护.

他们不是"官方",但绝对值得尝试