Entity Framework - Сохранение списка записей из таблицы данных в таблицу базы данных SQL Server. - PullRequest
0 голосов
/ 21 января 2020

Я новичок в EF, у меня есть список записей в таблице данных, я хочу сохранить эти записи из таблицы данных в SQL Серверную таблицу с использованием Entity Framework.

// My datatable which has my list of records is DT
foreach(DataRow dr in DT.Rows)
{
   savetoDB((Int32)dr["EmpId"], dr["DisplayName"], "CSE");
}

Private void savetoDB(int empId, string displayName, string Dep)
{
    using (MYDB em = new MYDB)
    {
        Employee emp = new Employee();
        emp.EmployeeId = empId;
        emp.DisplayName = displayName;
        emp.Department = Dep;
        Employee.Add(emp);
        em.SaveChanges();
     }
}

Это работает как и ожидалось, но я смотрю, есть ли лучший подход, вместо того, чтобы перебирать каждую строку в thr datatable и сохранять его. Если имеется 30 строк, мой метод вызывается 30 раз, а emp.SaveChanges(); выполняется 30 раз.

Помните, что у меня также есть stati c значение отдела.

1 Ответ

0 голосов
/ 21 января 2020

Как первый совет, который я хотел бы сказать, нет необходимости вызывать метод SaveDB в foreach итерация. вам просто нужно создать List<Employee> и в foreach добавить строки таблицы данных в этот список и после итерации передать List<Employee> к SaveDB методу.

var employees = new List<Employee>();
foreach(DataRow dr in DT.Rows)
{
   employees.Add(new Employee { EmployeeId = (Int32)dr["EmpId"] ...})
} 
SaveDB(employees);

В этом сценарии вы просто вызываете SaveDB метод один раз .

и для решения проблемы вызова SaveChanges() несколько раз, вам просто нужно использовать AddRange() метод и передайте employees ему.

Private void savetoDB(List<Employee> employees)
{
     using (MYDB em = new MYDB)
     {
        em.Employee.AddRange(employees);
        em.SaveChanges();
      }
 }

для получения дополнительной информации о AddRange() Вы можете перейти по этой ссылке .

удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...