@Nulltiton

Как можно упростить реализацию работы с БД в C#?

Приведу конкретный пример. Пишу десктопной приложение с CRUD-функциями для работы с БД. По-сути у меня для каждой таблицы в БД есть форма просмотра таблицы (dataGridView), отдельная форма с полями (textbox) для добавления записи в БД, отдельная форма с полями для редактирования записи в БД и класс, в котором реализованы CRUD-функции. Проблема заключается в том, что по-сути я каждый раз создаю похожие формы и классы с одинаковым функционалом, однако в CRUD-функциях будут разные SQL-запросы (из-за разных таблиц и разного количества полей в таблице БД), поэтому я не могу сделать условно один метод для добавления и передавать туда разные параметры в зависимости от функции. Если для форм я еще могу создать шаблон, то для кода на формах и класса - нет. Уверен, что это давно решенный вопрос, но не могу найти информацию, каким образом. Подскажите, куда примерно копать, отдельно буду благодарен за ссылки и примеры
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 2
yarosroman
@yarosroman Куратор тега C#
C# the best
Как выше сказали, форму можно и в рантайме создавать (что так и делается, только код отдельно находится для этого).
1. Можно использовать кодогенерацию, а не рефлексию, при этом вам в любом случае, ваши датаклассы надо будет атрибутами обвешивать, чтобы знать как создавать поля ввода.
2. Для WinForms готовых бесплатных решений нет. Для WPF https://github.com/GenericCodes/WPFCrudControl не полностью, но решает вашу проблему.
3. Среди платных решений (DevExpress, Teleric) есть инструменты для автогенерации форм, с шаблонами и прочим, но не в рантайме.
Ответ написан
Комментировать
vabka
@vabka Куратор тега C#
Токсичный шарпист

однако в CRUD-функциях будут разные SQL-запросы

Вынеси код со всеми CRUD-операциями в отдельный класс с интерфейсом. Передавай экземпляр этого класса в форму.

Сами формы можно в рантайме через рефлексию попробовать генерировать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы