我正在使用dbcontext / EF进行一些混乱,并且两者都为我的需求生成相同的东西。这些实际上相当吗?有什么有趣的点可以考虑差异吗?
//Something
var user = dbContext.Set<User>()
.Include(u => u.Preferences).FirstOrDefault(u => u.Id == userID);
//Something else
var user = dbContext.Set<User>().Where(u => u.Id == userID)
.Include(u => u.Preferences).FirstOrDefault();
..好奇。
谢谢!
答案 0 :(得分:4)
它们在功能上是等效的,并且应该导致对数据库执行相同的SQL查询(当然,取决于Linq提供程序的实现方式)。
答案 1 :(得分:0)
在@ThomasLevesque中回答他们在功能上是等同的。
更多,EF将它们转换为相同的表达式树(where表达式和Join / UnionAll - 在这种情况下只有一个Join - 表达式来解决Include)。
因此,单个EF提供程序始终返回相同的查询。