Как я могу использовать Linq с базой данных MySQL на Mono?

StackOverflow https://stackoverflow.com/questions/42212

  •  09-06-2019
  •  | 
  •  

Вопрос

Существует множество библиотек, предоставляющих возможности Linq для кода C #, взаимодействующего с базой данных MySQL.Какой из них наиболее стабилен и удобен для использования в Mono?

Предыстория (в основном не относящаяся к делу):У меня есть простая программа на C # (.Net 2.0), обновляющая значения в базе данных MySQL.Он выполняется каждую ночь через задание cron и работает на Pentium 3 450 МГц, Linux + Mono.Я хочу переписать его, используя Linq (.Net 3.5), в основном в качестве упражнения (я еще не использовал Linq).

Это было полезно?

Решение

Единственным (бесплатным) поставщиком linq для MySQL является DbLinq, и я считаю, что до готовности к производству еще далеко.

Существует также MyDirect.Net который является коммерческим, но я слышал неоднозначные отзывы о его возможностях.

Я читал, что MySQL будет внедрять Linq to Entities API для версии .net connector 5.3, но я не знаю, есть ли для этого даже временные рамки.Фактически, MySQL месяцами хранила полное молчание о поддержке Entity Framework.


Добавление:Последняя версия MySQL Connector / Net 6.0 поддерживает EF в соответствии с примечаниями к выпуску.Я понятия не имею, насколько это стабильно / полезно, поэтому я хотел бы услышать мнение любого, кто это пробовал.

Другие советы

В соответствии с Дорожная карта Mono Я не уверен, доступен ли Linq для mono?

По крайней мере, часть Linq может быть доступна в самой последней версии, но Linq to DB указан для Mono 2.4 (февраль 2009)

Не уверен насчет Mono, но я только начал использовать Скорость света и это поддерживает LINQ-to-MySQL.

в настоящее время вы не можете использовать linq to sql, вы могли бы обратиться к стороннему поставщику linq mysql или linq to entities.linq to sql работает только для баз данных sql server.

LINQ to SQL - это просто уровень ORM, использующий возможности выражений для упрощения построения запросов в вашем коде.

Если вы просто вызываете запросы adhoc для своего инструмента, нет особой необходимости использовать LINQ, это просто добавляет дополнительный уровень абстракции к вашему коду.

Я попробовал использовать учебник по адресу http://www.primaryobjects.com/CMS/Article100.aspx.При этом используется dblinq / dbmetal для генерации класса контекста данных и классов для каждой таблицы.

Сбой кода произошел с первой попытки из-за необработанного исключения (MySQL.Data.Types.MySqlConversionException:Не удалось преобразовать значение даты / времени MySQL в системное.DateTime").Поиск в Google показал, что это должно быть легко решено путем добавления "Разрешить нулевое Datetime = True;" к строке подключения.К сожалению, оказалось, что это не решило мою проблему.Думая, что виноват MySQL .Net Connector, я выполнил SQL, сгенерированный dblinq, без промежуточного уровня linq2sql, используя MySQL Connector.На этот раз исключения не произошло.Таблицы, в которых нет столбца даты, действительно работали с DbLinq.Итак, исходя из моего эксперимента, я согласен с Адамом, что DbLinq еще далек от готовности к производству.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top