Wenn ich die GetFoo().Count()
von einer Methode außerhalb meiner DB-Klasse aufrufen, führt Entity Framework 5 eher eine ineffiziente SELECT-Abfrage als eine COUNT. Wenn ich ein paar andere Fragen wie this lese, sehe ich, dass dies erwartetes Verhalten ist.Entitätsframework - COUNT statt SELECT
public IEnumerable<DbItems> GetFoo()
{
return context.Items.Where(d => d.Foo.equals("bar"));
}
Ich habe daher ein Zählverfahren meiner DB-Klasse hinzugefügt, die korrekt eine COUNT Abfrage führt:
public int GetFooCount()
{
return context.Items.Where(d => d.Foo.equals("bar")).Count();
}
mich mehrere Male von Definieren von Anfragen zu speichern, würde Ich mag, dies ändern Zu dem Folgendem. Dies führt jedoch erneut eine SELECT, obwohl es innerhalb der DB-Klasse ist. Warum ist das - und wie kann ich es vermeiden?
public int GetFooCount()
{
return this.GetFoo().Count();
}
Context.Items.Count (d => d.Foo == "bar"); du brauchst nicht den Where call :) –