Я понимаю, что в интересах эффективности при запросе базы данных вы должны возвращать только нужные столбцы и не более.BASIC Объектно-ориентированный картографический вопрос, заданный noob
Но учитывая, что я хотел бы использовать объекты для хранения результата запроса, это оставляет меня в дилемме:
Если бы я только получить значение столбцов, которые мне нужно в той или иной ситуации, я могу лишь частично заселить объект. Это, я считаю, оставляет мой объект в не идеальном состоянии, когда доступны только некоторые из свойств и методов. Позже, если возникает ситуация, когда я хотел бы повторно использовать объект, но обнаружил, что для новой ситуации требуется другой, но перекрывающийся набор столбцов, которые будут возвращены, я столкнулся с выбором.
Должен ли я повторно использовать существующий SQL и добавить в список выбранных столбцов дополнительные поля, которые требуются новой ситуации, так что одна и та же логика сопоставления запросов и объектов может быть повторно использована для обоих? Или я должен создать другой метод, который приводит к выполнению немного другого SQL, что приводит к заполнению только тех свойств объекта, которые были возвращены вторым запросом?
Я сильно подозреваю, что нет никакого волшебного ответа и что ответ действительно «зависит» от ситуации, но я думаю, что я ищу общий совет. В общем, мой подход состоял в том, чтобы либо вернуть все столбцы из запрашиваемой таблицы, либо добавить к запросу дополнительные столбцы по мере необходимости, но повторно использовать один и тот же код SQL (и код сопоставления), который до тех пор, пока производительность не станет проблемой. В общем, я нахожу, что, если вы не извлекаете большое количество строк, и я обычно не знаю, что стоимость добавления дополнительных столбцов к выходу не оказывает заметного влияния на производительность и что экономия времени разработки и упрощенного API, который является хорошим компромиссом.
Но как вы справляетесь с этой ситуацией, когда производительность становится фактором? Вы создать такие методы, как
Employees.GetPersonalInfo Employees.GetLittleMorePersonlInfoButMinusSalary и т.д., и т.д. и т.п.
Или вы как-то в конечном итоге создание API, где пользователь вашего API должен указать, какие столбцы/свойства он хочет заселен/вернулся, тем самым добавив сложности и сделав ваш API менее дружественным/простым в использовании?
Предположим, вы хотите получить информацию о сотрудниках. Сколько объектов обычно будет задействовано?
1) объект Сотрудник объект 2) Сотрудники коллекция, содержащая один объект Сотрудник для каждой строки Сотрудник возвращается 3) объект, например, EmployeeQueries, который возвращает содержит методы, такие как «GetHiredThisWeek», который возвращает коллекцию сотрудников 0 или более записей.
Я понимаю, что все это очень субъективно, но я ищу предложения о том, что вы нашли, работает лучше всего для вас.