C# 包含(字符串)和包含(x=>;x.myType)之间的实体框架性能

C# 包含(字符串)和包含(x=>;x.myType)之间的实体框架性能,c#,linq,entity-framework,C#,Linq,Entity Framework,我知道我们现在可以(从EF5?)使用 而不是 var employees = Db.Employees.Include(x => x.Details).Include(x => x.Details.Select(y => y.DetailsType)) 通过调试,tho查询似乎完全相同,因此我想问自己几个问题: 这两种用法有什么区别 这两条线的性能有区别吗 最佳实践是什么,我应该根据哪种情况使用哪种实践 谢谢你的回答;) 这两种用法有什么区别 一个使用字符串,另一个不使用

我知道我们现在可以(从EF5?)使用

而不是

var employees = Db.Employees.Include(x => x.Details).Include(x => x.Details.Select(y => y.DetailsType))
通过调试,tho查询似乎完全相同,因此我想问自己几个问题:

  • 这两种用法有什么区别
  • 这两条线的性能有区别吗
  • 最佳实践是什么,我应该根据哪种情况使用哪种实践
谢谢你的回答;)

这两种用法有什么区别

一个使用字符串,另一个不使用。因此,如果重命名属性,一个不会抛出编译错误,另一个会抛出编译错误

这两条线的性能有区别吗

字符串稍微快一点,IIRC。减少反射查找以找到其含义。我认为第二个表单动态地获取字符串

最佳实践是什么,我应该使用哪一种 哪种情况

由于第一部分中描述的差异,始终使用非字符串版本-如果重命名属性,则可以自动更正并找到该属性,而字符串形式中则不是这样

当你想起来的时候,其实很明显。还有,啊,有案可查

var employees = Db.Employees.Include(x => x.Details).Include(x => x.Details.Select(y => y.DetailsType))