当前位置:编程学习 > C#/ASP.NET >>

关于Linq to sql 中 EntityRef<T>.Entity 多次使用耗时问题

查看了下源码,发现EntityRef<T>.Entity 只有第一次Get才会进行数据库查询,照这个道理应该第二次之后读的速度比第一次快把,但似结果缺很奇怪,我试了取四次,每次都比前面取的慢,望指教哈。。代码如下:
 class Program
    {
        static void Main(string[] args)
        {
            DbContext.Context.Log = Console.Out;
            var source = DbContext.Context.AdminsMenus.Where(o=>o.MenuID=="11").ToList();
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            foreach(var value in source)
            {
                Console.WriteLine(string.Format("AdminName:{0} ", value.Admin.AdminName));
            }
            stopwatch.Stop();
            Console.WriteLine(string.Format("第一次取耗时{0}",stopwatch.Elapsed.ToString()));
            
            stopwatch.Start();
            foreach (var value in source)
            {
                Console.WriteLine(string.Format("AdminName:{0} ", value.Admin.AdminName));
            }
            stopwatch.Stop();
            Console.WriteLine(string.Format("第二次耗时{0}", stopwatch.Elapsed.ToString()));
            stopwatch.Start();
            foreach (var value in source)
            {
                Console.WriteLine(string.Format("AdminName:{0} ", value.Admin.AdminName));
            }
            stopwatch.Stop();
            Console.WriteLine(string.Format("第三次耗时{0}", stopwatch.Elapsed.ToString()));
            stopwatch.Start();
            foreach (var value in source)
            {
                Console.WriteLine(string.Format("AdminName:{0} ", value.Admin.AdminName));
            }
            stopwatch.Stop();
            Console.WriteLine(string.Format("第四次耗时{0}", stopwatch.Elapsed.ToString()));
            Console.ReadLine();
        }
    }

结果如下:
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,