EntityFramework 性能简单测试

发表于:2015-4-03 10:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:执着的码农    来源:51Testing软件测试网采编

  EntityFramework 的便捷不多阐述, 就他的性能来测试了下  不做评论,   缓存机制确实还不错  ....
  简单的查询一条数据
1         public static IM_CallRecord GetEFData()
2         {
3             using (ModelContainer mv = new ModelContainer())
4             {
5                 return (from c in mv.IM_CallRecord where c.id == 12356 select c).SingleOrDefault<IM_CallRecord>();
6             }
7         }
8
9         static void Main(string[] args)
10         {
11             Console.WriteLine("从230万条数据取一条数据");
12             //=================常规SQL===================
13             var beginTime = DateTime.Now;
14             com.infusionmanage.model.impl.IM_CallRecordDAOImpl im = new com.infusionmanage.model.impl.IM_CallRecordDAOImpl();
15             im.findByPage(12356, 1);
16             var endTime = DateTime.Now;
17             Console.WriteLine("---常规SQL----耗时:" + (beginTime - endTime).ToString());
18
19             //=================EF框架=====================
20             beginTime = DateTime.Now;
21             GetEFData();
22             endTime = DateTime.Now;
23             Console.WriteLine("从EF框架第一次耗时:" + (beginTime - endTime).ToString());
24
25             beginTime = DateTime.Now;
26             GetEFData();
27             endTime = DateTime.Now;
28             Console.WriteLine("从EF框架第二次耗时:" + (beginTime - endTime).ToString());
29
30             Console.ReadKey();
31         }
  高层视图:
  改变在现有系统使用EntityFramework并使其正常工作最好的理由是什么?
  · All -in-1框架的类映射表,需要编写映射代码, 并且是很难维护的。
  · 可维护性,易于理解的代码,无需创造大的数据访问层。
  · 提供LINQ查询数据库,这需要从初级开发人员不太了解SQL。
  · EF可以用作用于数据服务和OData Service的基础设施。
  什么的情况下,不建议使用EF呢:
  · 实时的应用程序。
  · 只能通过存储过程访问数据库。 EF的优势是:跟踪实体状态Change时,不仅仅在存储过程上.(即使EF确实对存储过程支持有限的)。
  · 频繁插入操作(Insert),  并且EF不支持大数据Bulk 插入。
  · 频繁更新操作,更新的目标主要是当多行(用一个单值)
  例如:UPDATE 表名 SET ColumA = 10 Where ColumnB =?
  这种更新操作更好的使用的ExecuteNonQuery(也可从Context上下文或直接从Ado.Net)。
  · 反范式的表设计和高性能查询。 EF产生查询,他们是难以维护的,它并不能很好地支持映射到不规范的表。
  · 对程序有非常的性能要求, 需要对每个查询进行监控.
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号