web-dev-qa-db-ja.com

Entity FrameworkでMariaDBを使用する

最近、MariaDBはMySQLのドロップオフ代替品であるというニュースを読みました。これは、Googleによると MySQLにはクラスター版/エンタープライズ版の価格が使いにくい があるためです。

GoogleでMariaDBのEFに関連するものが見つからないので、誰かがそれを知っていることを望んでいます。 100%互換性があるため、このためのMySQLドライバー を使用しても大丈夫ですか?何かご意見は?

更新

RedHatもMySQLからMariaDBに切り替えています がデフォルトのデータベース管理システムであることがわかりました。したがって、現在のプロジェクトではMariaDBに切り替える必要があります。

23
Christian Mark

MariaDB 10をEntity Frameworkで使用できましたが、主にMySQLツールが少しバグがあるため、少し作業が必要でした。

Visual Studio2010/2012でMySQL/MariaDBを使用するには、 MySQL for Visual Studio を使用してインストールする必要があります MySQLインストーラー 。コネクタと拡張機能のみをダウンロードしたいので、Webバージョンを使用しました。これを行うと、MariaDBに接続を追加してEFモデルを作成できます。

ただし、これではコードを実行するには不十分です。最初に、NuGetを使用してMySQL Connectorを追加する必要があります。

残念ながら、MySQL for Visual Studioは古いプロバイダーバージョン( here に言及)への参照を追加し、新しいバージョンをロードできません。これを修正するために、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"/>

じゃない

<remove name="MySql Data Provider"/>

remove要素内。

現在、MySQL for Visual StudioはVisual Studio 2013ではサポートされていません

更新-2017

Connector/.NETは基本的に停滞しており、2013年と同じ問題、たとえば真の非同期呼び出しがありません。 「非同期」コールは偽物です-それらは別々のスレッドで実行され、asyncを使用するまさにその目的を無効にします。それだけでは、minimumスレッド/ CPUの数を使用してできるだけ多くのリクエストを処理するWebアプリケーションには適していません。

.NET Coreサポートについては気にしないでください。

そのため、ここ数年、人々は独自の真の非同期プロバイダーを構築してきました。より人気のあるもののいくつかは次のとおりです。

  • MySqlConnector は、.NETand.NET Coreの真の非同期プロバイダーを提供します
  • Pomelo はMySQLConnector上でEF Coreサポートを提供します

それぞれ約10万件のNuGetがダウンロードされ、頻繁にバージョンが更新され、アクティブなメンテナンスが行われます。

彼らは「公式」ではありませんが、試してみる価値は間違いありません

10