我在接手别人的代码,遇到这个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;
}
那就是分别执行同一个查询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;
}