使用延迟加载的实体框架 - 在实体加载相关实体时有以下问题 是空的。
说我有两个员工和员工细节。假设在上述情况下,并非所有员工条目在employeedetails表中都有一个条目。 如果我想查找员工列表
(from e in objectcontext.employees
select new EmployeeEntity
{
EmpID= e.EmployeeID,
FirstName = e.FirstName,
Address = e.employeedetails.Address
}).ToList();
EmployeeEntity是我们填充结果的数据类。
如果返回列表中有一名员工,则上述代码会中断 表employeedetails中没有条目。 这是显而易见的,因为对于没有详细信息条目的客户,e.employeedetails将为null
重写上述查询的最佳方法是什么?
这样的事情会被接受吗?
(from e in objectcontext.employees
select new EmployeeEntity
{
EmpID= e.EmployeeID,
FirstName = e.FirstName,
Address = e.employeedetails == null ? "" : e.employeedetails.Address,
}).ToList();
我不清楚以上查询的效率 - 这个语句会在数据库级别进行空检查吗?
我是否应该做一个明确的包括
objectcontext.include("employeedetails")...
然后遍历结果以检查是否为空?
答案 0 :(得分:1)
是的,此语句确实会在生成的SQL查询中执行空检查。最有可能的是,它只是NVL
或COALESCE
。
这就是你应该这样做的方式。