Как заполнить список объектов из SQL DBDataReader - PullRequest
0 голосов
/ 24 мая 2019

Я использую запрос на выборку для выбора большого количества записей из базы данных и хочу записать их одновременно в список объектов, а не циклически проходить по каждой выбранной записи и записывать результат в объект. Я хотел бы знать, возможно ли это достичь в C #.

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

Если выбрано 20 000 записей, тогда reader.Read () будет выполнен 20 000 раз, что может занять больше времени и может оказаться неэффективным способом

Иметь класс работника, как показано ниже:

public class Employee
{
   [DbField(DbName = "EmployeeID", DbTypeName = "int", IsSelectable = true)]
   public int EmployeeID { get; set; };

   [DbField(DbName = "EmployeeName", DbTypeName = "string", IsSelectable = true)]
   public string EmployeeName { get; set; };

   [DbField(DbName = "JoingDate", DbTypeName = "DateTime", IsSelectable = true)]
   public DateTime JoingDate { get; set; };
}

Создание списка для хранения объектов

List<Employee> employeeList = new List<Employee>();

Использование запроса ниже для выбора сотрудников из таблицы Employee

Select EmployeeID,EmployerName,JoingDate from Employee 

и сохранение результатов в DBDataReader.

Использование приведенного ниже кода для записи выбранных результатов в объект и добавления объекта в список.

while (reader.Read())
            {
                Employee employee = new Employee()
                {
                    EmployeeID = reader.GetInteger(0),
                    EmployerName = reader.GetString(1),
                    joingDate = reader.GetDate(2),
                };
                employeeList.Add(employee);
            }

Я хотел бы знать, могу ли я напрямую записать результаты в employeeList без использования reader.Read (), чтобы избежать циклического прохождения всех выбранных строк, что может повысить производительность. Есть вероятность, что у меня может быть более 10 000 или 50 000 выбранных записей. Я все еще хотел бы использовать ту же структуру классов и DBDataReader. Но если есть какой-либо другой способ добиться этого, пожалуйста, дайте мне знать

...