1.
IQueryable接口与IEnumberable接口的区别: IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。
2.
Linq使用Func<T, bool>时候会产生全表查询,使用Expression<Func<T, bool>>这个来避免,参考:http://www.cnblogs.com/dudu/archive/2012/04/01/enitity_framework_func.html
3.
EF的find方法是先从内存中查询,内存中没有才查询数据库。
4.
调用Load方法就会加载数据到内存中
5.
this.actionServer.Delete(t => list.Contains(t.Id)),使用这样的方法删除,会生成一天select语句,然后根据查询到的数据逐个删除,根据查到的数据生成多个删除语句
6.
仅对 LINQ to Entities 中已排序的输入支持方法“Skip”。必须在调用“Skip”方法之前调用方法“OrderBy”。(排序时用skip需要注意)
7.
在使用Json序列化EF的Model时,Model有导航属性,可以使用Select以避免导航属性在序列化时产生循环引用
原文:http://www.cnblogs.com/RainbowInTheSky/p/4515475.html