这个EF查询有多少次数据库调用?

问题描述 投票:2回答:1

我在接手别人的代码,遇到这个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;
}
c# entity-framework linq
1个回答
2
投票

那就是分别执行同一个查询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;
}
© www.soinside.com 2019 - 2024. All rights reserved.