Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Базы данных > C# mysql


Автор: 8ka 05.12.13, 06:22
Подскажите плиз, существует ли в C# какой-нибудь набор компонентов для работы с Mysql ?
кроме MySQL Connector/Net, он не подходит, т.к.,
Как я понял, придется все вручную описывать, конекты, события и.д. :(

Автор: Craft 05.12.13, 20:00
В принципе есть несколько вариантов. Правда я не люблю писать код через SqlCommand, SqlConnection и т.д. поэтому посоветую ORM. А вы уже сами смотрите подходит вам или нет.
1) BLToolkit - использовался в промышленной эксплуатации. Понравилась возможность кеширования запросов, неплохо документирован, прост в использовании + очень легко настраивать мапинг через код.
2) EF - Entity Framework. Два подхода к использованию ModelFirst и CodeFirst. Пример первого вижу чаще в использовании так как постоянный геморрой с миграциями может привести вас в уныние.
NHibernate - не буду советовать так как не в обиду разработчиков этого продукта, в последнем проекте мы нахватались от него столько багов и глюков что я его никогда не буду советовать.

Автор: conalex 11.12.13, 18:54
Я использовал MySQL Connector/Net следующим образом (VS 2010 Pro):

- install MySQL Connector/Net
- в студии добавить источник данных (хост, пароль, БД)
- прямо в мастере настройки источника отмечаем нужные таблицы
- мастер формирует стандартные команды SELECT,INSERT,DELETE с необходимыми параметрами
- на выходе имеем DataSet с таблицами, классы-обертки для работы с таблицами и их адаптерами
- добавляем все в проект, автоматом настраивается BindingSource для проекта (использовать, к примеру, в DataGridView)

Более сложные варианты не пробовал. Отпишусь о впечатлениях.
В коде использовать все это хозяйство достаточно удобно. По крайней мере, можно организовать вполне нормальную логику работы с данными, реакцию на изменение и т.п.
Все происходит по-сути через классы DataTable (классы-обертки для работы с таблицами - его потомки) и TableAdapter.
Достаточно просто можно добавить какие угодно запросы в набор команд адаптеров и пользоваться ими, как обычными методами класса.
Удобно пользоваться BindnigSource и событиями навроде DataTable.RowChanged и т.п.
SqlCommand, SqlConnection и пр. рутину вручную описывать не нужно. Поля таблиц типизированы, очень помогает автокомплит при наборе кода.

Из неудобств:
- автоматом не цепляются отношения таблиц по внешним ключам, если они настроены на сервере, их почему-то не видно в DataSet у клиента. Может быть, что-то не так настраивал
или что-то не учел, не знаю.
- в настройках полей таблиц на клиенте приходится подкручивать вручную некоторые параметры, типа DafaultValue, AutoIncrement Seed, типизацию.
- MySqlDataTime (аналог системного DataTime) не очень удобный тип данных, для использования в коде.
- немного напрягает "размазанность" кода и настроек по всяким там мастерам, конструкторам, классам и файлам, снепривыку долгонько тыкаться приходится, пока прочухаешь мазу,
но это, видимо, специфика технологии студии.
- коннектор имеет некоторые неочевидные особенности, например, запросто можно словить эксепшн "Нарушение параллелизма..." на обновлениях.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)