简而言之:使用lambda表达式和使用查询表达式获取记录之间有什么区别吗?
在下面的示例中:
为什么在执行查询2与查询3时结果会有所不同?
var empdId = Guid.Parse("C8475622-09A9-4284-80D4-AAXXK");
//City for this employee was Washington in database
var emp = ctx.Employee
.FirstOrDefault(emp => emp.ID == empId);
emp.City = "New York"; //Modified the entity
//Lambda version
//Fetched again including foreign key relation Salary
var employeeCity = ctx.Employee.Include("Salary")
.FirstOrDefault(emp => emp.ID == empdId).City;
//New York
var cityfetchedAgain = from e in ctx.Employee
join sal in ctx.Salary on e.ID equals sal.EmployeeId
where e.ID == empdId
select e.City;
var city = cityfetchedAgain.FirstOrDefault();
//Washington
修改
我将重新说出我的问题:Include
查询版本返回已更改的属性,即使更改未提交到数据库也是如此。但是LINQ Join
不知道上下文中的更改(此处为City属性)。记录是从数据库中提取的。
我在这些表之间配置了显式外键。我是不是该 总是喜欢包括?