生命周期

1、Queryable 什么时候操作库

当Queryable类型变成非Queryable的时候我们会触发执行生成Sql操作或者执行数据库

db.Queryable<Student>().ToList();//从queryable变成了List类型发生变化,说明已经生成了SQL或者执行了数据库

2、Queryable是一个引用类型

连续操作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

3、Queryable拷贝机制

我们的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();


关闭
果糖网