Использование MariaDB с Entity Framework

Недавно я прочитал новость о том, что MariaDB представляет собой отходящую замену MySQL, поскольку недружественная цена MySQL для кластеризованных / корпоративная версия по данным Google.

Сейчас я не могу найти в Google ничего подходящего об EF для MariaDB, поэтому надеюсь, что кто-то знает об этом. Можно ли использовать для этого драйвер MySQL, поскольку он на 100% совместимы? Есть предположения?

Обновить

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


person Christian Mark    schedule 25.11.2013    source источник
comment
Учитывая, что MariaDB - это политическая вилка, было бы безумием нарушать совместимость с проводным протоколом MySQL. Вероятно, легче поддерживать совместимость, чем поддерживать целое семейство клиентского программного обеспечения. Они также прямо говорят об этом в документации: mariadb.com/kb/en/ совместимость mariadb и mysql.   -  person millimoose    schedule 25.11.2013
comment
У меня нет ресурсов для виртуализации сервера RedHat с помощью MariaDB. Я пробовал MySQL на сервере RedHat.   -  person Christian Mark    schedule 25.11.2013
comment
Вы не можете загрузить VirtualBox, установить в него CentOS и MariaDB и указать образец проекта в этой БД?   -  person millimoose    schedule 25.11.2013
comment
Хорошая идея, но я не могу со спецификациями моей машины. И я не об этом прошу.   -  person Christian Mark    schedule 25.11.2013
comment
Что ж, это все равно придется делать. Тем не менее, учитывая, что в их документации прямо говорится, что интерфейсы среднего уровня (т. Е. Опубликованные API, а не форматы файлов данных и внутреннее прочее) совместимы, действительно должны быть совместимы и интерфейсы высокого уровня. Взлом EF будет ошибкой.   -  person millimoose    schedule 25.11.2013
comment
попробуйте brice-lambson.blogspot.in/2012/10 /   -  person VahidN    schedule 20.12.2013


Ответы (1)


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

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

Однако этого недостаточно для запуска вашего кода. Сначала вам нужно добавить MySQL Connector с помощью NuGet.

К сожалению, MySQL для 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>

Это заменяет старую ссылку на новую. Обратите внимание, что я использовал

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

нет

<remove name="MySql Data Provider"/>

в элементе remove.

В настоящее время MySQL для Visual Studio не поддерживается в Visual Studio 2013.

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

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

Неважно о поддержке .NET Core.

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

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

Каждый пакет NuGet загружается около 100 тыс., Частые версии и активное обслуживание.

Они не "официальные", но их определенно стоит попробовать.

Обновление блокировки - апрель 2020 г.

Кажется, MySqlConnector и Pomelo действительно взлетели.

Connector / .NET наконец-то выпустил пару версий после почти двухлетнего использования последней , 8.0.19, получено 233K загрузок.

MySqlConnector, с другой стороны, получил 496K загрузок для версии 0.61. .0. Мелкие обновления происходят часто, последнее, 0.63.2, выходит за 8 часов до этого поста. Возможно, это слишком часто, но намного лучше, чем 2 года.

Я еще не проверял функции или совместимость MySql 8. Если бы мне пришлось выбирать (что я, вероятно, сделаю для проекта на следующей неделе), я бы начал с MySqlConnector.

Я подозреваю, что Connector / .NET будет вынужден предлагать гораздо более частые обновления, чтобы идти в ногу с выпусками .NET Core, но на данный момент это только предположения.

person Panagiotis Kanavos    schedule 20.12.2013
comment
Сейчас есть какая-то поддержка (VS2013 и MySQL), но это больно. В итоге я создал EF в 2012 году, а затем использовал 2013 год для разработки. - person Noctis; 16.04.2014
comment
И, кстати, у вас есть приложение под GPL. - если у вас нет коммерческой лицензии на соединитель MySQL под GPL (не LGPL). - person Stefan Steiger; 15.09.2017
comment
@StefanSteiger, официальный коннектор, имеет столько серьезных проблем (например, поддельные асинхронные вызовы), что люди начали свои собственные проекты за последние 3 года. MySqlConnector кажется самым популярным провайдером ADO.NET и Pomelo предлагает поддержку EF. Похоже, Oracle не особо заботится о MySQL (я имею в виду .NET) - person Panagiotis Kanavos; 15.09.2017
comment
@Panagiotis Kanavos: Вместо этого я бы использовал mariadb-connector, он также работает с MySQL: github.com / noahvans / mariadb-connector-net Но интересно через Pomelo, если вы используете EF. - person Stefan Steiger; 15.09.2017
comment
@StefanSteiger, похоже, заброшенный. Последняя фиксация была 2 года назад, и последняя сборка не удалась. - person Panagiotis Kanavos; 15.09.2017
comment
@Panagiotis Kanavos: Да, я тоже это заметил. Тогда MySqlConnector. Возможно, это модифицированная версия старой версии MySqlConnector, но это всего лишь предположение. - person Stefan Steiger; 15.09.2017
comment
Три года спустя, и кажется, что все изменилось и обновилось. Возможное обновление этого ответа? :) - person FireController1847; 10.04.2020
comment
@ FireController1847 реальная разница в том, что MySqlConnector и Pomelo теперь имеют почти столько же, если не больше, загрузок в месяц в NuGet, как MySql.Data, но гораздо более частые обновления. - person Panagiotis Kanavos; 10.04.2020
comment
Привет, спасибо за обновление. Да, я в конечном итоге использовал их, и мне наконец удалось получить рабочую версию всего, даже если она не была такой гибкой, как все остальное. .NET: P - person FireController1847; 10.04.2020