Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lambda vs查询表达式实体框架/外键关系_C#_Entity Framework - Fatal编程技术网

C# Lambda vs查询表达式实体框架/外键关系

C# Lambda vs查询表达式实体框架/外键关系,c#,entity-framework,C#,Entity Framework,简而言之:使用lambda表达式获取记录和使用查询表达式获取记录之间有什么区别吗 在以下示例中: 我拿到了一份员工记录 他修改了工资却没有储蓄 对上下文的更改我获取包含薪水表的相同记录 为什么执行查询2和查询3时的结果不同 var empdId = Guid.Parse("C8475622-09A9-4284-80D4-AAXXK"); //City for this employee was Washington in database var emp = ctx.Employee .

简而言之:使用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不知道这里的context City属性发生了变化。记录是从数据库中提取的

我在这些表之间配置了显式外键。我应该吗 总是喜欢包括


include和join不一样。示例中的两个查询不一样,但不是因为一个使用查询语法,另一个使用扩展方法,而是因为它们不一样。在第三个查询中,返回status字段,第二个查询返回city。那么这两个字段都是一样的?@PragneshKhalas第三个查询是一个拼写错误。查询是不同的,因为它们都没有明确的顺序,.FirstOrDefault基本上转换为前1。。。。可以从结果集中选择感觉像的任何行作为第一行。。。。。