首页 > 其他 > 详细

EntityFramework1

时间:2014-03-27 17:39:45      阅读:445      评论:0      收藏:0      [点我收藏+]

1.ORM都是Select * ,即使不需要某些字段,也要查询出来,效率是否很低。

   可以使用视图来解决,比如对于列表页,可以定义一个视图,只查询列表中需要使用的字段,然后将列表映射为实体

2.ORM中的SQL在何时执行

   ①查询:共有三种返回类型(IQueryable/IEnumerable/IList)      

  A.IQueryable和IEnumerable都是延时执行(Deferred Execution)的,而IList是即时执行(Eager Execution)

  B.IQueryable和IEnumerable在每次执行时都必须连接数据库读取,而IList读取一次后,以后各次都不需连接数据库。前两者很容易造成重复读取,性能低下,并且可能引发数据不一致性

  C.IQueryable和IEnumerable的区别:IEnumberalb使用的是LINQ to Object方式,它会将AsEnumerable()时对应的所有记录都先加载到内存,然后在此基础上再执行后来的Query。所以上述TestIEnumerable例子中执行的SQL是"select top(5) ...",然后在内存中选择前两条记录返回。

      总结:

  A.当你打算马上使用查询后的结果(比如循环作逻辑处理或者填充到一个table/grid中),并且你不介意该查询会即时执行,使用ToList()

  B.当你希望查询后的结果可以供调用者(Consummer)作后续查询(比如这是一个"GetAll"的方法),或者你希望该查询延时执行,使用AsQueryable()

     详细可以参考:Entity Framework中IQueryable, IEnumerable, IList的区别

   ②插入、更新:在执行SaveChanges()方法时执行SQL

3.执行存储过程

EntityFramework1,布布扣,bubuko.com

EntityFramework1

原文:http://www.cnblogs.com/liboen/p/3628740.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!