我明白为什么第一个 for 循环会产生一个对数据库的请求,但为什么第二个 for 循环会产生 5 个对数据库的请求?
class Program
{
static void Main(string[] args)
{
TAXIDBEntities1 ctx = new TAXIDBEntities1();
List<TestObject> Tests;
//This block makes 1 requests to database
Tests = ctx.TestObjects.ToList();
for (int i = 0; i < 5; i++)
{
foreach (TestObject item in Tests)
{
System.Diagnostics.Debug.WriteLine(item.id);
}
System.Threading.Thread.Sleep(2000);
}
//This block makes 5 requests to database
var x = ctx.TestObjects;
for (int i = 0; i < 5; i++)
{
foreach (TestObject item in x)
{
System.Diagnostics.Debug.WriteLine(item.id);
}
System.Threading.Thread.Sleep(2000);
}
}
}
我不明白第二个 for 循环中发生了什么。有人可以解释为什么数据库有 5 个请求,如 Sql profiler 中所示?