Играю в начале личного проекта на C# и MySQL.
Я знаком с использованием Gentle Framework (использую MyGeneration для генерации классов на основе модели данных). Вот что мне нравится в Gentle;
К сожалению, для эффективного запроса я в конечном итоге использую запросы / SqlCommands изрядно и полагаюсь на слабо типизированные ссылки на имена столбцов и т. д., И, похоже, рискует обойти брокер объектов и, следовательно, преимущества кэширования. В любом случае Gentle больше не разрабатывается, и похоже, что сейчас самое время рассмотреть альтернативы.
Итак, что я должен учитывать?
Будем признательны за ваши мысли! Заранее спасибо...





У меня был некоторый опыт работы с Gentle, и я должен признать, что он был довольно неэффективен с запросами. Я бы посоветовал заглянуть в NHibernate, так как у него богатое сообщество. Верно, что определения XML предпочтительнее, но есть способы сделать сопоставления с использованием атрибутов уровня класса.
SubSonic (особенно Версия 3.0) выглядит очень многообещающим с использованием Шаблоны T4. Это должно дать вам больше контроля над генерацией кода. Он также может выполнять LINQ.
Не инвестируйте в LINQ-to-SQL, поскольку ходят слухи, что его поддержка будет прекращена.
Предполагая, что .Net 3.5 Framework является вариантом для использования, вы можете взглянуть на Microsoft Entity Framework (выпущенный с .Net 3.5 Service Pack 1).
Entity Framework позволяет создавать классы DAL на основе схемы вашей базы данных, но обслуживание этих классов скрыто за XML-файлом, который можно быстро и легко обновить для учета изменений схемы с помощью простой команды из Visual Studio IDE.
Я работаю над проектом, в котором мы без проблем используем Entity Framework с MySQL. Основным недостатком этого варианта является то, что официальный коннектор .Net, предоставляемый MySQL, еще не поддерживает Entity Framework - существует платная альтернатива, известная как MyDirect.Net.
Спасибо Филипу и Snorkpete за ваши предложения - ваши комментарии и ссылки оказались полезными.
Я, вероятно, сначала попробую SubSonic; это похоже на то, что я пойму и смогу быстро приступить к работе (сегодня должен ответить на этот вопрос), и я был удивлен, увидев, что это косвенно поддерживается MS, поскольку они нанимают человека, который это пишет. Т4 тоже выглядит очень интересно.
Модель отношений сущностей также выглядит интересной, и ссылка на MyDirect может оказаться полезной в будущем. Единственный недостаток здесь - ожидание; В прошлом MS облажалась со своим подходом, упростив создание первоначального дизайна с помощью перетаскивания, а затем гораздо сложнее изменить или поддерживать его в актуальном состоянии.
В любом случае, спасибо вам обоим еще раз, и я постараюсь держать этот вопрос в курсе.
Nij
текст ссылкиI подойдет для дозвукового, зрелого генератора DAL и значительно повысит производительность.
Мы использовали его как с MySQL, так и с SQL Server - без проблем. Создает классы для таблиц, хранимых процедур, имен столбцов. Поэтому каждый раз, когда мы выполняем Somthing Dot Intellisense, перемещаем клавиши со стрелками и точку с запятой.
Каждый раз, когда ваша схема изменяется, вы можете заново создать эти классы, и вы дома. Кроме того, вы можете расширить их, создав частичные классы.
Он поддерживает почти всю семантику SQL - объединения, загрузка коллекции по первичному ключу, добавление предложения WHERE, упорядочение по, счетчик, начало, вызов хранимых процедур, представлений и т. д., А также интуитивный синтаксис - большой плюс.
Чтобы дать вам некоторое представление - Таблица для книг [BookID-PK, title, AuthorID] генерирует несколько типов методов.
Вот быстрая ссылка.
Спасибо, Маулик Моди
Через несколько годы после того, как я задал вопрос, я наконец пометил этот ответ как «принятый», потому что я все же попробовал SubSonic.
Я использую немного SQL для генерации строго типизированных объектов из таблиц, он основан на одном, созданном Кейдом Брайантом, но я сделал некоторые настройки. Код, который он генерирует, не компилируется на 100%, но он экономит много работы, а пробелы легко заполняются (на вашем месте я бы сделал все свойства полноценными свойствами, иначе несу гнев Джона Скита!)
Пожалуйста. Я также вспомнил, что видел другую структуру сущностей под названием LightSpeed (mindscape.co.nz/products/LightSpeed). Это коммерческая версия с ограниченной бесплатной версией. Что интересно, их главный парень (andrewpeters.net) был нанят Microsoft для работы над Entity Framework.