【发布时间】:2012-05-17 12:39:05
【问题描述】:
这行得通:
var user = db.Users.OrderByDescending(u => u.Id).FirstOrDefault(u => u.Email == "asd@gmail.com" && u.Password == "8a79hjhfas8d7fd89");
正确生成只返回一个用户的sql语句。
下面的代码在理论上是相同的,它从数据库中获取所有用户,然后只应用过滤器。它就像我在执行 .ToList() 一样工作,因此评估数据库中的所有内容,并在常规 IEnumerable 中应用过滤器,而不是生成正确的 sql 语句:
public static User Get(Func<User, bool> predicate)
{
return db.Users.OrderByDescending(u => u.Id).FirstOrDefault(predicate);
}
var user = User.Get(u => u.Email == "asd@gmail.com" && u.Password == "8a79hjhfas8d7fd89");
这是实体框架的错误还是我遗漏了什么?
【问题讨论】:
标签: entity-framework