Мини версия класса
От: corpse56  
Дата: 15.12.21 19:07
Оценка:
Здравствуйте!

Есть такой вопрос, даже и не знаю как сформулировать строку поиска в гугл, поэтомц решил спросить здесь.

Допустим есть класс, который представляет некую сущность из БД. Полей у класса очень много. Вопрос заключается в том, как поступить, когда требуется загрузить только определённые поля из БД? Для примера возьмём такой класс:

class Person
{
    int id;
    string name;
    string field1;
    ...
    string fieldN;
}


Для одних задач нужны все поля, для других достаточно двух-трёх. Если для большого количества объектов типа Person загружать все поля в задаче, где требуется только одно поле, то производительность сильно падает, да и не логично это. Вопрос состоит в том, как сделать так, чтобы можно было загрузить только определённые поля. У меня есть только один вариант. Примерно такой:
(псевдокод)
class Person
{
    public Person(string[] filedsToLoad)
    {
        foreach(string field in fields)
        {
             switch (field)
             {
                 case "id":
                     this.Id = this.loadId();
                     break;
                 case "name":
                     this.Name = this.loadName();
                     break;
                 //loadOtherFields
             }
        }
    }

}

Но он мне не нравится, потому что в этом случае будет происходить обращение к базе за каждым полем. Это, конечно, не все поля загружать, но получается очень много обращений к базе. Скорее всего, тоже не очень хорошо. Хочется сделать один запрос.

Ещё вариант — иметь разные классы Person под разные задачи, но это совсем не то.

Может быть стоит воспользоваться конструктором sql-запросов? Если да, то какой посоветуете? Если нет, то как можно ещё этого добиться?

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.