Как я могу использовать Linq с базой данных MySQL на Mono?
Вопрос
Существует множество библиотек, предоставляющих возможности 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 еще далек от готовности к производству.