C # и MySQL - альтернативы Gentle Framework - PullRequest
0 голосов
/ 15 ноября 2008

Я играю в начале личного проекта на C # и MySQL.

Я знаком с использованием Gentle Framework (используя MyGeneration для генерации классов на основе модели данных). Вот что мне нравится в Gentle;

  • Простая в использовании семантика [class] .Retrieve (id) / [object] .Persist () со строгой типизацией полей;
  • Я начинаю с модели данных БД и выбираю, когда создавать новые файлы кода;
  • MyGeneration допускает некоторые «ручные разделы кода», которые хранятся в разных поколениях ...
  • ... и частичные классы позволяют мне добавлять постоянный код в параллельные файлы, например простые свойства только для чтения (например, «FullName» от членов FirstName и Surname для объекта Person) - или я мог бы использовать наследование;
  • Я считаю приемлемым и быстрым способ создания DAL и добавления к нему определенных объектов, подобных бизнес-объектному уровню.

К сожалению, для эффективного запроса я заканчиваю тем, что использую запросы / SqlCommands справедливо, и опираюсь на слабо типизированные ссылки на имена столбцов и т. Д., И, похоже, рискует обойти посредника объектов и, следовательно, преимущества кэширования. В любом случае, Gentle больше не разрабатывается, и кажется, что сейчас самое время рассмотреть альтернативы.

Итак, что я должен рассмотреть?

  • Возможно создание строго типизированных наборов данных ADO, но, похоже, будет сложно добавить в него (например, этот виртуальный столбец 'FullName') способ, который будет сохраняться после обновления структуры таблицы с регенерацией набор данных.
  • Кажется, что у NHibernate много поклонников ... но мой первый взгляд на это, кажется, предполагает, что определение данных XML - король, а не существующая модель данных в БД. Это также выглядит довольно тяжело на зависимости;
  • Похоже, что демонстрационная версия SubSonic генерирует файлы, а в демонстрационной версии WebAppProjects выглядит так, как будто она может генерировать файлы способом, который я мог бы добавить или унаследовать;
  • Инструменты MySql Connector.Net, по-видимому, не поддерживают генерацию набора данных для Linq (например, с помощью перетаскивания), и я подозреваю, что это ключевая необходимость для доступа к данным со строгой типизацией.

Ваши мысли будут с благодарностью оценены! Заранее спасибо ...

Ответы [ 5 ]

2 голосов
/ 16 ноября 2008

Предполагая, что .Net 3.5 Framework является опцией для использования, вы можете взглянуть на Microsoft Entity Framework (выпущенный с .Net 3.5 с пакетом обновления 1).

Entity Framework позволяет генерировать классы DAL на основе схемы базы данных, но обслуживание этих классов скрыто за файлом XML, который можно быстро и легко обновить для учета изменений схемы с помощью простой команды из Visual Studio. IDE.

Я работаю над проектом, в котором мы используем Entity Framework с MySQL без особых проблем. Основным недостатком этой опции является то, что официальный .Net-соединитель, предоставляемый MySQL, еще не поддерживает Entity Framework - существует платная альтернатива, известная как MyDirect.Net

.
2 голосов
/ 15 ноября 2008

У меня был некоторый опыт работы с Gentle, и я должен признать, что это было довольно неэффективно с запросами. Я бы посоветовал заглянуть в NHibernate, поскольку у него богатое сообщество. Это правда, что определения XML предпочтительнее, но есть способы сделать сопоставления, используя атрибуты уровня класса.

SubSonic (особенно версия 3.0 ) выглядит очень многообещающе с использованием шаблонов T4 . Это должно дать вам больше контроля над генерацией кода. Это может сделать LINQ тоже.

Не вкладывайте средства в LINQ-to-SQL, поскольку ходят слухи, что он будет прекращен.

0 голосов
/ 17 декабря 2008

Я использую немного SQL для генерации строго типизированных объектов из таблиц, он основан на одном, созданном Cade Bryant, но я сделал некоторые изменения. Код, который он генерирует, не на 100% компилируется, но он экономит большую часть работы котельной плиты, а пробелы легко заполнить (я бы сделал все свойства полноценными свойствами, если бы я был вами, или нести гнев Джона Скита!) 1001 *

http://NotifyURL.com/sql

0 голосов
/ 17 декабря 2008

текст ссылки Я бы пошел на Subsonic, зрелый генератор DAL и значительно повысил производительность.

Мы использовали его как с MySQL, так и с SQL Server - без головной боли. Создает классы для таблиц, хранимых процедур, имен столбцов. Поэтому каждый раз, когда мы выполняем действия Somthing Dot Intellisense, перемещайте клавиши со стрелками и точку с запятой.

Каждый раз, когда ваша схема изменяется, вы можете восстановить эти классы, и вы дома. Также вы можете расширить их, создав частичные классы.

Он поддерживает почти всю семантику SQL - объединения, загрузка коллекции по первичному ключу, добавление предложения WHERE, упорядочение по, счетчик, верх, вызов хранимых процедур, представления и т. Д., А также интуитивный синтаксис - большой плюс.

Чтобы дать вам некоторое представление о таблице книг [BookID-PK, title, AuthorID], она генерирует несколько типов методов.

  • Вставить метод, который принимает Title, AuthorID
  • Обнуляемые столбцы являются необязательными. параметры a.k.a C # Обнуляемый тип?
  • Метод обновления, который принимает BookID, AuthorID, Title
  • Загрузка книги по первичному ключу (полезно при отображении страницы сведений)
  • BookCollection и Book Entities, просто вызовите BookCollection.Load, и у вас есть список книг, готовых для привязки к любому элементу управления с привязкой к данным

Вот быстрая ссылка.

Спасибо, Маулик Моди

0 голосов
/ 17 ноября 2008

Спасибо и Филипу, и Сноркпете за ваши предложения - ваши комментарии и ссылки оказались полезными.

Сначала я попробую SubSonic; это похоже на то, что я пойму и смогу быстро приступить к работе (сегодня я должен ответить на это), и я был удивлен, увидев, что это косвенно поддерживается MS, поскольку они нанимают парня, который это пишет. Т4 тоже выглядит очень интересно.

Модель отношений сущностей также выглядит интересной, и ссылка на MyDirect может оказаться полезной в будущем. Единственным недостатком здесь является ожидание; MS в прошлом испортила свой подход, упрощая создание первоначального дизайна с помощью перетаскивания, а затем значительно труднее его модифицировать или поддерживать в актуальном состоянии.

В любом случае, еще раз спасибо вам обоим, и я постараюсь постоянно обновлять этот вопрос.

Ния

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...