我一直在好奇Dapper(或者其他ORMs)如何与LINQ结合处理对象检索。Dapper在Linq操作之前从数据库请求完整对象吗?
如果我有这样一个类:
public static IEnumerable<SitePage> GetAll()
{
using (IDbConnection cn = new SqlConnection(g.Global.CONX))
{
cn.Open();
return cn.GetAll<SitePage>();
}
}
和我建立这样的查询:
var result = SitePage.GetAll().Select(c=> new { c.id, c.PageUrl, c.ParentId });
我很好奇,如果在后台,整个记录集获取包括拉所有其他列(可能包含非常大的变种),或者Dapper从这个查询中理解的仅仅是拉入我从sql db请求的列中?我意识到这是一种新手,但我想更好地理解Dapper/LINQ交互。
在这里发布了一个类似的问题:selecting-specific-columns-using-linq-what-gets-transferred,但我不确定是否完全回答。海报有2个问题,也没有使用我通常喜欢的lambda表达式。
对此的回答会让我头脑发热(并且很可能会改变我的编码方式,因为我一直保持谨慎,并且觉得我通过显式sql编写了太多的代码)。
请参阅。 http://stackoverflow.com/a/35956207/5779732 –
@A_J您提供的链接也非常有帮助,并且是一个很好的提醒,因为我认为我曾经见过它。 – secretwep