2013-11-25 15 views
20

最近、私はMariaDBがGoogleによるとMySQL has unfriendly pricing for clustered/enterprise versionからMySQLのドロップオフ置換であるというニュースを読んだ。Entity FrameworkでMariaDBを使用する

今、私はMariaDBに関するEFに関する何かをGoogleで見つけることができないので、誰かがそれについて知りたいと思っています。 MySQL driver for this since it is 100% compatibleを使用してもよろしいですか?何かご意見は?

更新

私はちょうどそれのためにRedHat is also switching from MySQL to MariaDBは、デフォルトのデータベース管理システムであるということが分かりました。私の現在のプロジェクトではMariaDBに切り替える必要があります。

+0

間違いなく価値がある、彼らはしかし、MySQLのワイヤプロトコルとの互換性を破るために非常識なことでしょう。おそらく、クライアントソフトウェアのファミリ全体を維持するよりも互換性を維持する方が簡単です。彼らはまた、明示的にこれをdocsで言う:https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/。 – millimoose

+0

MariaDBでRedHatサーバーを仮想化するためのリソースがありません。私が試したことは、RedHatサーバー上のMySQLです。 –

+0

VirtualBoxをダウンロードしてCentOSとMariaDBをインストールすることはできません。そのDBにサンプルプロジェクトをポイントできますか? – millimoose

答えて

7

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

Visual StudioでMySQL/MariaDBを操作するには、2010/2012を入力する場合はMySQL Installerを使用してMySQL for Visual Studioをインストールする必要があります。私はコネクターと拡張機能をダウンロードしたいだけなので、Web版を使用しました。これを行うと、MariaDBに接続を追加してEFモデルを作成できます。

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

残念ながら、Visual Studio用のMySQLは、古いプロバイダのバージョン(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要素に

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

ない

<remove name="MySql Data Provider"/> 

を使用していることに注意してください。現在、Visual Studio用のMySQLは、Visual Studioで2013

をサポートしていません

UPDATE - 2017

コネクタ/ .NETはありません例えば、それは2013年に持っていたのと同じ問題で、基本的に停滞しています真の非同期呼び出し。 "非同期"呼び出しは偽物です - 別のスレッドで実行され、asyncの目的を破ってしまいます。それだけでは、のスレッド数/ CPUの最小値であるを使用して、できるだけ多くの要求をサーバーに入れたいWebアプリケーションには適していません。

.NETコアのサポートについて気にする必要はありません。

これは、過去数年間、人々が独自の真に非同期のプロバイダを構築した理由です。より一般的なものは以下の通りです。

  • MySqlConnectorは、.NET のための真の非同期プロバイダを提供しています。NETコア
  • Pomelo約100K NuGetのダウンロードそれぞれ、頻繁にバージョンおよび有効なメンテナンスでMySQLConnector

の上にEFコアサポートを提供しています。

彼らは「公式」ではありませんが、MariaDBは政治的なフォークですとして見しようとして

+0

現在、サポートがあります(VS2013とMySQL)が、それは苦痛です。私は2012年にEFを作成し、2013年に開発を終了しました。 – Noctis

+0

そして、あなたはGPLアプリケーション、btwを持っています。 - あなたがGPL(LGPLではなく)MySQLコネクタの商用ライセンスを持っていない場合。 –

+0

@StefanSteiger "公式"コネクタには、過去3年間に人々が自分のプロジェクトを始めたほどの深刻な問題(偽の非同期呼び出しなど)があります。 [MySqlConnector](https://github.com/mysql-net/MySqlConnector) が最も普及しているADO.NETプロバイダと思われます。[Pomelo](https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql)その上にEFサポートを提供します。それは* Oracle *のように(私は意味する)のMySQLについてはあまり気にしないようです –

関連する問題