据我所知,如果我调用下面的代码,将从数据库中查询数据并在本地内存返回实际对象。调用此代码后,稍后对列表的操作将不会再次调用数据库:
db.Context.Where(...).ToList()
如果我不使用ToList只使用Where或Select选项,它将返回IQueryable<>宾语。
var data = db.Context.Where(...).Select (...) or db.Context.Where(...);
这是否意味着,该方法尚未调用数据库来获取数据,直到我调用ToList,First()等...
foreach (var a in data)
{
var b = a.SomeCollection.ToList()
}
答案 0 :(得分:0)
是的,您可以根据需要使用IQuery<>创建和操作您的查询接口
如果您看到它的属性,您会发现,它都是关于处理SQL查询的。它有一个Provider
,Query
,ConnectionString
等等。
实际上,当你调用ToList<>
或ToArray<>
或类似的东西时,它只是命令IQueryable Object执行它对数据库的SQL查询。