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


        Рейтинг@Mail.ru
        [ Script execution time: 0,0493 ]   [ 17 queries used ]   [ Generated: 29.03.24, 12:19 GMT ]