关于EF 的数据库操作执行时间

情景如下:

做一新闻查询(根据新闻分类CategoryID),

using(var con = new Context())

{

  //do

}

如果分类为0,那么查询全部,如果分类不为0,那么就根据分类去查询。

1、var news = db.news;

2、var news = db.news.where(n=>n.cateid=categoryid).tolist()

 

三个问题,

1、如何将2个查询合并为一个方法,使用参数去区分。

2、如果根据参数去匹配,是否是像这个写法:

var news = db.news

if(cateid!=0)

{

  news = news.where(n=>n.cateid=categoryid).tolist()

}

3、这种情况下,if之前的语句是否是查询所有数据,我这里想要问的是,EF是在什么时候去数据库里边查数据,我担心 在 if之前它会先去查询所有匹配数据,然后到if里边再去筛选,这样会影响性能。


阿晨1998
浏览 836回答 2
2回答

沧海一幻觉

在为实体写的Service里可以用方法重载来解决函数多签名的问题。一般情况下linq查询数据集,不是即时加载的。
打开App,查看更多内容
随时随地看视频慕课网APP