我有一个奇怪的错误我无法理解。设置断点和本地手表之后,它就出现了:
_temp
怎么可能是真的(即,集合db.Users
包含名称" dummy")的用户,虽然集合db.Users
是空的?
为了完整性:
public class DBCUsers : DbContext {
public DbSet<User> Users { get; set; }
}
public class User {
public int ID {get; set;}
public string Name {get; set;}
}
答案 0 :(得分:3)
DbSet<T>.Local
包含先前查询已从数据库中检索的条目集合。除此之外,其目的是节省不必要的往返旅程。
除非您之前在上下文中执行了查询以检索User
个实体,否则Local
将为空。您对Any()
的调用可以转换为返回布尔值的SQL查询,因此不会导致上下文检索任何实体。
要解决您的问题,请使用直截了当的db.Users.Count()
,它会查询数据库以获取计数,或者通过调用Local
来填充Load()
,从EF6开始QueryableExtensions
中的System.Data.Entity
中提供。