Мне было любопытно некоторое время о том, как Dapper (или, возможно, другие ORM) обрабатывают поиск объектов в сочетании с 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 });
Мне интересно, если в фоновом режиме, весь набор запись получает тянут в том числе все остальные столбцы (которые могут содержать действительно большие varchars), или Dapper понимает из этого запроса только для того, чтобы вытащить столбцы, которые я запрашиваю из sql db? Я понимаю, что это своего рода новичок, но я хочу лучше понять взаимодействие Dapper/LINQ.
Аналогичный вопрос был отправлен здесь: selecting-specific-columns-using-linq-what-gets-transferred, хотя я не был уверен, был ли полностью ответ. У плаката было 2 вопроса, а также не использовались лямбда-выражения, которые я обычно предпочитаю.
Ответ на этот вопрос поставит меня под сомнение (и, возможно, изменит способ кодирования, поскольку я был осторожен и чувствую, что я пишу слишком много кода через явный sql).
См. http://stackoverflow.com/a/35956207/5779732 –
@ A_J Ссылка, которую вы предоставили, также очень полезна и является хорошим напоминанием, потому что я думаю, что видел ее в прошлом. – secretwep