Хорошие проекты для проектирования ООП для обработки данных базы данных
Мне кажется, что я задаю довольно простой вопрос, и я думаю, что должен найти хороший ответ где-то в Интернете. Но я измучен от поиска и только поднял пару сухих костей. Прежде всего, я испугался, что этот вопрос, вероятно, слишком субъективен:)
Во всяком случае, здесь встает вопрос. Что считается хорошей практикой для доступа, обработки и обработки данных из реляционной базы данных в объектно-ориентированной программе? До сих пор в моем программировании я обрабатывал данные базы данных в процедурной форме. В настоящее время я активно пытаюсь улучшить свои привычки ООП, и я не был уверен, как справиться с этой проблемой.
Вот один из сценариев, с которыми я работаю. У меня есть таблица со многими рабочими позициями в ней. Приложение, которое я пишу (улучшаю), выполняет большую обработку на каждой задаче. Например, я повторяю каждую строку в таблице и делаю следующее:
- Запланируйте дату в календаре Google
создать папку, уникальную для задания в заданном каталоге
создать рабочий заказ для работы
создать контракт на вакансию
управляет документами путешественников.
информация по электронной почте для пары людей
и т.д., список идет
Вы понимаете. На каждой работе выполняется много обработки. В настоящее время у меня есть то, что большинство хороших программистов назвали бы фантастическим дерьмом кучи кода спагетти. Может быть, это не совсем так плохо, но почти. Я повторяю каждую строку в таблице с помощью a для каждого цикла и последовательно выполняю каждое действие в каждой строке. Мне не нравится то, как в настоящее время разрабатываются вещи, но я не знаю, что делать лучше.
Я бы хотел, чтобы у меня был аккуратный объект под названием "Jobs", который бы реализовал все свойства задания и предоставил метод для выполнения каждого из действий. Тогда я мог бы даже создать собственную коллекцию для работы с моими работами, и весь мир был бы ярче. Все решение было бы более читаемым, проще в обслуживании, проще добавлять действия для выполнения на каждом задании (что часто бывает) и т.д.
Но моя проблема в том, что я не могу понять, как установить связь между причудливыми объектами и базой данных. Должен ли я использовать какое-то объектно-реляционное сопоставление (я читал все разные мнения об этом)? Я просто просматриваю все строки и преобразую их в объекты, которые накапливаются в коллекции? Или это лучший вариант для продолжения подобных проектов в процедурной форме? Мне бы очень понравились ваши ответы и ввод.
Меня интересует информация по этому вопросу абстрактным образом. Другими словами, мне интересно, как справиться с такой ситуацией в целом. Не только для примера, который я дал. Но, конечно, отличные качества. Я выполняю большую часть своих программ в Visual Basic и С# с VS 2010.
Посмотрите на шаблон хранилища. Это отличный способ отделить доступ к данным от бизнес-обработки значимыми способами. Применяя этот шаблон, у меня есть несколько проектов:
- Объекты - объекты, которые хранят вещи
DataAccess - обертки ORM DbContext и ADO.NET
Репозиторий - обертывает запросы, чтобы представить строго типизированные функции для остальной части приложения.
TheRest - другие проекты/уровни: бизнес, графический интерфейс и т.д.
См. Как использовать контекст Entity Framework с инъекцией зависимостей? для хорошего описания каждого из типов проектов
Но моя проблема в том, что я не могу понять, как установить связь между причудливыми объектами и базой данных. Должен ли я использовать какое-то объектно-реляционное сопоставление (я читал все разные мнения об этом)?
Да.
Что касается обработки. Используйте шаблон посетителя и пусть все разные коды, которые хотят обрабатывать данные, регистрируются в качестве посетителя. Вы также можете использовать инверсию управляющего контейнера для управления этим (IHandlerOf<Job>
или IHandlerOf<TravelerDocument>
).
Это дает вам более слабосвязанный способ обработки данных.