当Queryable类型变成非Queryable的时候我们会触发执行生成Sql操作或者执行数据库
db.Queryable<Student>().ToList();//从queryable变成了List类型发生变化,说明已经生成了SQL或者执行了数据库
连续操作Queryable的Where条件会叠加
var able=db.Queryable<Student>(); able.Where(it=>it.id>0); able.Where(it=>it.tid>0); var list=able.ToList(); //where id>0 and tid>0
我们的Queryable是不能串用的,比如 ToSql 后就不能ToList ,这个时候我们会提供一个拷贝机制
可以多次执行库操作
var query = db.Queryable<Student>().Where(it=>it.Id==1); if(条件) query.Where(it => it.Name == "jack"); if(条件) query.Where(it => it.Id==1); int count=query.Clone().Count();//当query用于2个地方的时候一定要加Clone这点和EF有本质区别 var list=query.Clone().ToList();
2016 © donet5.comApache Licence 2.0