Хорошие проекты для проектирования ООП для обработки данных базы данных

95
9

Мне кажется, что я задаю довольно простой вопрос, и я думаю, что должен найти хороший ответ где-то в Интернете. Но я измучен от поиска и только поднял пару сухих костей. Прежде всего, я испугался, что этот вопрос, вероятно, слишком субъективен:)


Во всяком случае, здесь встает вопрос. Что считается хорошей практикой для доступа, обработки и обработки данных из реляционной базы данных в объектно-ориентированной программе? До сих пор в моем программировании я обрабатывал данные базы данных в процедурной форме. В настоящее время я активно пытаюсь улучшить свои привычки ООП, и я не был уверен, как справиться с этой проблемой.


Вот один из сценариев, с которыми я работаю. У меня есть таблица со многими рабочими позициями в ней. Приложение, которое я пишу (улучшаю), выполняет большую обработку на каждой задаче. Например, я повторяю каждую строку в таблице и делаю следующее:


    Запланируйте дату в календаре Google
    создать папку, уникальную для задания в заданном каталоге
    создать рабочий заказ для работы
    создать контракт на вакансию
    управляет документами путешественников.
    информация по электронной почте для пары людей
    и т.д., список идет

Вы понимаете. На каждой работе выполняется много обработки. В настоящее время у меня есть то, что большинство хороших программистов назвали бы фантастическим дерьмом кучи кода спагетти. Может быть, это не совсем так плохо, но почти. Я повторяю каждую строку в таблице с помощью a для каждого цикла и последовательно выполняю каждое действие в каждой строке. Мне не нравится то, как в настоящее время разрабатываются вещи, но я не знаю, что делать лучше.


Я бы хотел, чтобы у меня был аккуратный объект под названием "Jobs", который бы реализовал все свойства задания и предоставил метод для выполнения каждого из действий. Тогда я мог бы даже создать собственную коллекцию для работы с моими работами, и весь мир был бы ярче. Все решение было бы более читаемым, проще в обслуживании, проще добавлять действия для выполнения на каждом задании (что часто бывает) и т.д.


Но моя проблема в том, что я не могу понять, как установить связь между причудливыми объектами и базой данных. Должен ли я использовать какое-то объектно-реляционное сопоставление (я читал все разные мнения об этом)? Я просто просматриваю все строки и преобразую их в объекты, которые накапливаются в коллекции? Или это лучший вариант для продолжения подобных проектов в процедурной форме? Мне бы очень понравились ваши ответы и ввод.


Меня интересует информация по этому вопросу абстрактным образом. Другими словами, мне интересно, как справиться с такой ситуацией в целом. Не только для примера, который я дал. Но, конечно, отличные качества. Я выполняю большую часть своих программ в Visual Basic и С# с VS 2010.

спросил(а) 2021-01-28T00:26:44+03:00 4 недели, 1 день назад
1
Решение
95

Посмотрите на шаблон хранилища. Это отличный способ отделить доступ к данным от бизнес-обработки значимыми способами. Применяя этот шаблон, у меня есть несколько проектов:


    Объекты - объекты, которые хранят вещи
    DataAccess - обертки ORM DbContext и ADO.NET
    Репозиторий - обертывает запросы, чтобы представить строго типизированные функции для остальной части приложения.
    TheRest - другие проекты/уровни: бизнес, графический интерфейс и т.д.

См. Как использовать контекст Entity Framework с инъекцией зависимостей? для хорошего описания каждого из типов проектов

ответил(а) 2021-01-28T00:26:44+03:00 4 недели, 1 день назад
61

Но моя проблема в том, что я не могу понять, как установить связь между причудливыми объектами и базой данных. Должен ли я использовать какое-то объектно-реляционное сопоставление (я читал все разные мнения об этом)?



Да.

Что касается обработки. Используйте шаблон посетителя и пусть все разные коды, которые хотят обрабатывать данные, регистрируются в качестве посетителя. Вы также можете использовать инверсию управляющего контейнера для управления этим (IHandlerOf<Job> или IHandlerOf<TravelerDocument>).


Это дает вам более слабосвязанный способ обработки данных.

ответил(а) 2021-01-28T00:26:44+03:00 4 недели, 1 день назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема