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产生查询,他们是难以维护的,它并不能很好地支持映射到不规范的表。
• 对程序有非常的性能要求, 需要对每个查询进行监控.
时间: 2024-10-18 12:38:25