Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.42.33] |
|
Сообщ.
#1
,
|
|
|
Подскажите плиз, существует ли в C# какой-нибудь набор компонентов для работы с Mysql ?
кроме MySQL Connector/Net, он не подходит, т.к., Как я понял, придется все вручную описывать, конекты, события и.д. |
Сообщ.
#2
,
|
|
|
В принципе есть несколько вариантов. Правда я не люблю писать код через SqlCommand, SqlConnection и т.д. поэтому посоветую ORM. А вы уже сами смотрите подходит вам или нет.
1) BLToolkit - использовался в промышленной эксплуатации. Понравилась возможность кеширования запросов, неплохо документирован, прост в использовании + очень легко настраивать мапинг через код. 2) EF - Entity Framework. Два подхода к использованию ModelFirst и CodeFirst. Пример первого вижу чаще в использовании так как постоянный геморрой с миграциями может привести вас в уныние. NHibernate - не буду советовать так как не в обиду разработчиков этого продукта, в последнем проекте мы нахватались от него столько багов и глюков что я его никогда не буду советовать. |
Сообщ.
#3
,
|
|
|
Я использовал 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) не очень удобный тип данных, для использования в коде. - немного напрягает "размазанность" кода и настроек по всяким там мастерам, конструкторам, классам и файлам, снепривыку долгонько тыкаться приходится, пока прочухаешь мазу, но это, видимо, специфика технологии студии. - коннектор имеет некоторые неочевидные особенности, например, запросто можно словить эксепшн "Нарушение параллелизма..." на обновлениях. |