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