2013-11-25 5 views
20

Недавно я прочитал новость о том, что MariaDB является заменой замены для MySQL с MySQL has unfriendly pricing for clustered/enterprise version в соответствии с Google.Использование MariaDB с платформой Entity

Теперь я не могу найти что-либо относящееся к EF для MariaDB в Google, поэтому я надеюсь, что кто-то знает об этом. Можно ли использовать MySQL driver for this since it is 100% compatible? Есть предположения?

Update

Я только что узнал, что RedHat is also switching from MySQL to MariaDB для него это по умолчанию система управления базами данных. Поэтому мой текущий проект должен переключить его на MariaDB.

+0

Видя, как MariaDB политической вилки, они бы с умом, чтобы нарушить совместимость с проволокой протоколом в MySQL, хотя. Вероятно, проще поддерживать совместимость, чем поддерживать целую семью клиентских программ. Они также прямо говорят об этом в документах: https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/. – millimoose

+0

У меня нет ресурсов для виртуализации сервера RedHat с MariaDB. То, что я пробовал, это MySQL на сервере RedHat. –

+0

Вы не можете загрузить VirtualBox, установить CentOS и MariaDB в это, и указать пример проекта в этой БД? – millimoose

ответ

7

Я смог использовать MariaDB 10 с Entity Framework, хотя для этого потребовалась небольшая работа, главным образом потому, что инструменты MySQL немного ошибочны.

Для работы с MySQL/MariaDB в Visual Studio 2010/2012 , вам необходимо установить MySQL for Visual Studio с помощью MySQL Installer. Я использовал веб-версию, так как я только хотел скачать разъемы и расширения. После этого вы можете добавлять подключения к MariaDB и создавать модели EF.

Этого недостаточно для запуска кода. Сначала вам нужно добавить MySQL Connector, используя NuGet.

Unfortuanetly, MySQL для 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 для Visual Studio не поддерживается в Visual Studio 2013

ОБНОВЛЕНИЯ - 2017

Connector/.NET, по существу, на прежнем уровне, с теми же проблемами, что было в 2013 году, например, нет истинные асинхронные вызовы. «Асинхронные» вызовы являются поддельными - они запускаются на отдельных потоках, нанося ущерб самой цели использования async. Это само по себе делает его непригодным для веб-приложений, где требуется как можно больше запросов на сервер, используя минимум количество потоков/CPU.

Не обращайте внимания на поддержку .NET Core.

Именно поэтому в последние несколько лет люди создали свои собственные, действительно асинхронные провайдеры. Некоторые из наиболее популярных из них являются:

  • MySqlConnector предлагает действительно асинхронный поставщик для .NET и.NET Ядро
  • Pomelo предлагает поддержку EF Core, на вершине MySQLConnector

С о 100K NuGet загружает каждый, частые версии и активное обслуживание.

Они не являются «официальными», но, безусловно, стоит попробовать

+0

Теперь есть какая-то поддержка (VS2013 и MySQL), но это боль. В итоге я создал EF с 2012 годом, а затем использовал 2013 для разработки. – Noctis

+0

И тогда у вас есть приложение GPL, кстати. - если у вас нет коммерческой лицензии для соединителя MySQL GPL (не LGPL). –

+0

@StefanSteiger «официальный» разъем имеет так много серьезных проблем (например, поддельные асинхронные звонки), что люди начали свои собственные проекты за последние 3 года. [MySqlConnector] (https://github.com/mysql-net/MySqlConnector) , по-видимому, является самым популярным провайдером ADO.NET и [Pomelo] (https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql) предлагает поддержку EF поверх нее. Это выглядит так: * Oracle * не заботится о MySQL (для .NET я имею в виду) –

Смежные вопросы