Entity Framework 小刀初试
这Entity Framework风风火火的炒了好长时间了,再加上前两天无意中看到园子里的一篇文章(一年前)说:微软将废弃两个框架,同时在MSDN的Entity Framework帮助中发现微软使用LINQ TO Entity 帮助现有的LINQ TO SQL 开发人员转移到Entity Framework,终于在写了一堆的LINQ TO SQL后,再也忍不住Entity Framework的诱惑,小试了一把,说实话,感觉不怎么样,此次只是小试,参考的是Entity Framework learning guide,以下是我简单测试后的结果,话不用多说,况且我现在也不是很了解Entity Framework,Entity Framework learning guide也才看了两章,大家手里有砖头、鸡蛋什么的,扔吧,别纂手里浪费了。
1、准备工作
1.1、环境:windows server 2003,visual studio 2008 sp1,sql 2005 express
1.2、数据库是根据 Entity Framework learning guide中提示下载的NorthWind数据库
2、测试代码,极度简单
2.1、
2 //记录开始时间
3 DateTime starttime = DateTime.Now;
4 var employees = from emp in db.Employees select emp;
5 foreach (var e in employees)
6 {
7 Console.WriteLine("FirstName:{0}", e.FirstName);
8 }
9 //记录结束时间
10 DateTime endtime = DateTime.Now;
11 TimeSpan ts = endtime.Subtract(starttime).Duration();
12 Console.ForegroundColor = ConsoleColor.Red;
13 Console.WriteLine("用时:{0}", ts.TotalMilliseconds);
14 Console.ForegroundColor = ConsoleColor.Gray;
2.2、注意上面这段代码,只是简单的创建了一个Entity Framework对象,并调用了其Employees对象并获取数据库中EMployees table中的所有数据(其实只有几行),迭代其并输出一个雇员的FirstJName。
2.3、增加了一个DateTime对象来记录从获取Employee对象到输出的时间,这就是全部代码
2.4、输出结果,第一次加载数据居然使用了968.75毫秒,只有区区九行数据(当然这里不知道是否加载了其它关联表数据)
2.5再次加载结果,用时15.625毫秒和0毫秒,0毫秒的出现是因为从上次加载后无间隔加载,15.625毫秒是因为自上次加载后间隔3秒钟后加载。
3、换段代码再试试
3.1、这次我从创建Entity Framework对象开始计时,请注意红色的DateTime对象的记录起始位置。
2 DateTime starttime = DateTime.Now;
3 var db = new NorthwindEntities();
4 var employees = from emp in db.Employees select emp;
5 foreach (var e in employees)
6 {
7 Console.WriteLine("FirstName:{0}", e.FirstName);
8 }
9 //记录结束时间
10 DateTime endtime = DateTime.Now;
11 TimeSpan ts = endtime.Subtract(starttime).Duration();
12 Console.ForegroundColor = ConsoleColor.Red;
13 Console.WriteLine("用时:{0}", ts.TotalMilliseconds);
14 Console.ForegroundColor = ConsoleColor.Gray;
3.2、本次测试结果的第一次加载,比上一次测试又多花了100毫秒,在控制台等待的时候,可以真实的感受到这种延迟,啥也别说了,看结果吧。
3.2、再次加载的结果和第一次测试代码中的一样,在这里我就不再贴图了。
4、结果如何,我不敢妄自下结论,还是留给大家吧
4.1、因为我也是刚刚开始了解Entity Framework,而且 Entity Framework learning guide也才看了两章,加上本人英文欠佳,理解上可能又会有很多差异。
--------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎转载,但请注明出处--lsotcode博客(http://www.cnblogs.com/viter/)!
说得不对的地方,欢迎拍砖!