Сколько вызовов базы данных в этом EF-запросе? - PullRequest
2 голосов
/ 17 апреля 2020

Я беру чей-то код и наткнулся на этот запрос Entity Framework, и я никогда не видел, чтобы это делалось таким образом. Разве нет запроса к базе данных каждый раз, когда вызывается .FirstOrDefault? Таким образом, в этом случае будет 4 запроса к базе данных, что означает 5 открытых / закрытых подключений к базе данных? Просто пытаюсь понять, если это неэффективный способ сделать это, как мне кажется.

var record = from e in ctx.bio_employee.Where(x => x.emp_id == emp_id)
             select new
             {
                  ta.ta_system
                 ,ta.bio_consent_flag
                 ,e.bio_consentform_rid
             };


if (record.FirstOrDefault() != null) 
{
    vm.TASystem = record.FirstOrDefault().ta_system;
    vm.bio_consent_flag = record.FirstOrDefault().bio_consent_flag == null ? "N" : record.FirstOrDefault().bio_consent_flag.Trim().ToUpper();
    vm.employee_bio_consentform_rid = record.FirstOrDefault().bio_consentform_rid;
}

1 Ответ

2 голосов
/ 17 апреля 2020

Выполняет один и тот же запрос 4 или 5 раз, хотя пул соединений будет использовать одно соединение повторно. Должно быть

var query = from e in ctx.bio_employee.Where(x => x.emp_id == emp_id)
             select new
             {
                  ta.ta_system
                 ,ta.bio_consent_flag
                 ,e.bio_consentform_rid
             };

var result = query.FirstOrDefault();

if (result != null) 
{
    vm.TASystem = result .ta_system;
    vm.bio_consent_flag = result .bio_consent_flag == null ? "N" : result .bio_consent_flag.Trim().ToUpper();
    vm.employee_bio_consentform_rid = result.bio_consentform_rid;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...