C# и MySQL - альтернативы Gentle Framework

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

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

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

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

Итак, что я должен учитывать?

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

Будем признательны за ваши мысли! Заранее спасибо...

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
2 143
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

У меня был некоторый опыт работы с 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

Пожалуйста. Я также вспомнил, что видел другую структуру сущностей под названием LightSpeed ​​(mindscape.co.nz/products/LightSpeed). Это коммерческая версия с ограниченной бесплатной версией. Что интересно, их главный парень (andrewpeters.net) был нанят Microsoft для работы над Entity Framework.

Filip Frącz 19.11.2008 20:34
Ответ принят как подходящий

текст ссылкиI подойдет для дозвукового, зрелого генератора DAL и значительно повысит производительность.

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

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

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

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

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

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

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

Через несколько годы после того, как я задал вопрос, я наконец пометил этот ответ как «принятый», потому что я все же попробовал SubSonic.

Nij 19.09.2013 11:12

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

http://NotifyURL.com/sql

Другие вопросы по теме