Ich war eine Weile neugierig darauf, wie Dapper (oder vielleicht andere ORMs) den Objektabruf in Verbindung mit LINQ handhabt.Fordert Dapper vor den Linq-Operationen ein vollständiges Objekt von der Datenbank an?
Wenn ich eine Klasse wie folgt:
public static IEnumerable<SitePage> GetAll()
{
using (IDbConnection cn = new SqlConnection(g.Global.CONX))
{
cn.Open();
return cn.GetAll<SitePage>();
}
}
und ich eine Abfrage wie folgt konstruieren:
var result = SitePage.GetAll().Select(c=> new { c.id, c.PageUrl, c.ParentId });
Ich bin neugierig, wenn im Hintergrund, der gesamte Datensatz in darunter gezogen wird alle anderen Spalten (die wirklich große varchars enthalten können), oder versteht Dapper von dieser Abfrage nur, um die Spalten einzuholen, die ich von der sql db anfordere? Ich weiß, es ist eine Art Neuling, aber ich möchte die Dapper/LINQ-Interaktion besser verstehen. Eine ähnliche Frage wurde hier gepostet: selecting-specific-columns-using-linq-what-gets-transferred, obwohl ich nicht sicher war, ob vollständig beantwortet wurde. Das Poster hatte 2 Fragen und verwendete auch keine Lambda-Ausdrücke, die ich generell bevorzuge.
Die Antwort darauf wird meine Meinung in Brand setzen (und möglicherweise ändern Sie die Art, wie ich kodiere, wie ich vorsichtig war und fühle, dass ich über explizite SQL zu viel Code schreibe).
Siehe. http://Stackoverflow.com/a/35956207/5779732 –
@A_J Der Link, den Sie zur Verfügung gestellt haben, war auch sehr hilfreich und eine gute Erinnerung, weil ich denke, ich habe es in der Vergangenheit gesehen. – secretwep