我正在使用数据库第一种方法开发一个asp.net mvc-4 web项目。现在我有以下Context类: -
Public partial class IT360servicedeskEntities : DbContext
{
public IT360servicedeskEntities()
: base("name=IT360servicedeskEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<TAccount> TAccounts { get; set; }
public DbSet<TAccountStatu> TAccountStatus { get; set; }
public DbSet<TContactInfo> TContactInfoes { get; set; }
public DbSet<TGroup> TGroups { get; set; }
public DbSet<TLogin> TLogins { get; set; }
public DbSet<TOrganization> TOrganizations { get; set
}
现在让我说在我的模型类中,我写了以下内容: -
var test = context. TOrganizations;
var2 = test.Where(a=>a.id == 100);
所以我的问题是var类型是什么?它将被视为IEnumerable或IQueryable,换句话说,我的上述代码会导致Where子句在内存或数据库内部执行吗? 感谢
答案 0 :(得分:1)
当您致电var t = test.Where(a=>a.id == 100)
时,它会返回IQueryable<TOrganization>
。在你的情况下,Where is IQueryable的扩展方法,调用此方法将操作Expression tree,但没有理由在数据库内执行。当您预先t
或致电t.ToList()
/ t.ToArray()
时,它将访问Expression树并构建sql字符串,然后从数据库中获取数据。