LINQ to EF容易疏忽的几个小问题
2013-04-09 16:46
369 查看
在对一个以前的一个小项目(基于.Net 3.5 SP1)进行调优时,发现其中在使用LINQ to EF存在的几个小问题。这些问题都直接影响了最终生成的SQL语句以及程序的性能。
1. 联表查询时尽量不要使用导航属性,而是应该将所有涉及到的关联对象都使用linq
join on起来,详见这篇
2.对于byte,short等实现了IComparable<T>的类型,在比较大小时应该尽量使用接口方法CompareTo(T other),否则生成的SQL中会使用cast进行类型转换,这样有可能导致索引失效。
比如
应该改成:
var item = from item in db.Items where item.State.CompareTo(state)>=0 select item;
生成的SQL: ...where [item].[State] >=@linq_p_paramter0
1. 联表查询时尽量不要使用导航属性,而是应该将所有涉及到的关联对象都使用linq
join on起来,详见这篇
2.对于byte,short等实现了IComparable<T>的类型,在比较大小时应该尽量使用接口方法CompareTo(T other),否则生成的SQL中会使用cast进行类型转换,这样有可能导致索引失效。
比如
byte state = 5; //这里的State字段在数据库中是tinyint类型 var item = from item in db.Items where item.State>=state select item; //生成的SQL:... where cast([item].[State] as int)>=(cast @linq_p_paramter0 as int)
应该改成:
var item = from item in db.Items where item.State.CompareTo(state)>=0 select item;
生成的SQL: ...where [item].[State] >=@linq_p_paramter0
相关文章推荐
- EF架构~linq to entity的随机排序问题
- LINQ to SQL学习的几个问题
- 关于 Linq to EF 的内存泄漏问题
- Linq to Sql 更新数据时容易忽略的问题
- Linq To EF 使用小知识(添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)
- Linq To EF 用泛型时生成的Sql会查询全表的问题
- Linq To EF 使用小知识(添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)
- Linq to Sql 更新数据时容易忽略的问题
- Java初学者容易混淆的几个问题
- Java初学者容易混淆的几个问题
- Linq to EF 与Linq to Object 使用心得
- Linq to SharePoint中一个列表包含多个Content Type问题
- Linq to Entities in Ado.net EF的事务
- 软件架构设计时容易忽略的几个重要问题
- LinqToSql ,EF:外键实体的CRD
- linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)
- java几个容易混淆的问题
- 关于Java字符编码几个容易弄错的问题
- LINQ To Xml:迭代中的万圣节问题
- Linq to EF 与Linq to Object 使用心得