Я начал обслуживать приложение, которое поставляется с большой базой данных, которая частично не нормализована / довольно грязная.Много повторяющихся данных и несколько таблиц с множеством полей (более 30).Например, у меня есть таблица с именем Orders, которая содержит множество полей.Я бы пошел и разделить эту таблицу, но изменения в макете базы данных не допускаются.Теперь, если я, например, придерживаюсь шаблона репозитория, я считаю, что должен создать сущность Order и методы CRUD для нее.Проблема в том, что бизнес-логика почти никогда не требует загрузки / обновления всего объекта заказа, а только его подмножества.Это составило бы множество сущностей (таких как FullOrder, OrderMetaInfo, OrderProcessingDetails и т. Д.).
Мой вопрос заключается в том, как лучше всего справиться с подобным беспорядком в базе данных?Я думал о создании простого класса с именем Orders. Объекты, упомянутые ранее как POCO, имеют методы UpdateOrderMetaInfo () или GetOrderProcessingDetails ().Это кажется довольно хорошим способом, пока вы не начнете думать о том, что есть две таблицы: одна - «Заказы», а другая - «Архивные заказы» (и нет, поля не идентичны, но очень похожи - даже не спрашивайте).Кажется, я буду работать с огромным количеством дублирующегося кода.Теперь я начинаю думать о написании действительно простого класса доступа к базе данных, где вы передаете ручной SQL-запрос и получаете набор записей, как в старые добрые времена.У вас есть идея получше, чем эта?
Факты и ограничения: Это база данных Sql, и проект написан на C #.Существует другая система, использующая ту же базу данных, поэтому изменение макета базы данных - это , а не вариант.Использование EF или любого стороннего продукта для доступа к данным - тоже вариант , а не .
Извините за очень длинный пост и спасибо за ваш отзыв.