EntityFramework1
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的更多相关文章
随机推荐
- C. Robot(BFS)
C. Robot Time Limit: 3000ms Case Time Limit: 3000ms Memory Limit: 262144KB 64-bit integer IO format: ...
- JavaScript --------------继前面继承方式-------总结
创建对象方式: 工厂模式:使用简单的函数创建对象,为对象添加属性和方法,然后返回对象: function createPerson(name,age,job){ var o = new Object( ...
- 检测浏览器是否支持AJAX
<script type="text/javascript"> function ajaxFunction() { var xmlHttp; try { // Fire ...
- c# 运算符 ?、??、?:
用途:简化代码 说明: ? 是可空类型和运算符 int a; //a<>null int ?b; //b=null int ?c = b+1; //c=null; ?? 是空接合运算符 i ...
- git add和被ignore的文件
如果有如下的目录结构: workspace tree | --------------------- | | hello.c ...
- 解决jQuery中dbclick事件触发两次click事件
首先感谢这位小哥!http://qubernet.blog.163.com/blog/static/1779472842011101505853216/ 太长姿势了. 在jQuery事件绑定中,dbc ...
- The FastCGI process exited unexpectedly
ERROR:HTTP Error 500.0 - Internal Server Error D:\Program Files\php\php-cgi.exe - The FastCGI proces ...
- [转]让Sublime Text2支持浏览器中预览
转自http://www.imququ.com/post/view-sublime-text-2-file-in-browser.html 1.点击菜单Tools -> New Plugin.. ...
- Qt中事件处理的方法(三种处理方法,四种覆盖event函数,notify函数,event过滤,事件处理器。然后继续传递给父窗口。可观察QWidget::event的源码,它是虚拟保护函数,可改写)
一.Qt中事件处理的方式 1.事件处理模式一 首先是事件源产生事件,最后是事件处理器对这些事件进行处理.然而也许大家会问, Qt中有这么多类的事件,我们怎么样比较简便的处理每个事件呢?设想,如果是 ...
- HtmlTextNode & HtmlCommentNode
在HtmlAgilityPack里,HtmlTextNode对应的是文本节点.这是一个非常简单的一个类,方法和字段都比较少. 一.属性 override string InnerHtml { get; ...