Welche Best Practices verwenden L2S mit neuen C# 5 async/await
Keywords im Vergleich zu this Ansatz? Konnte im Web nicht gefunden werden.Verwenden von Linq zu Sql asynchron mit neuen async/erwarten
Antwort
EF 5 hat keine async/await-Unterstützung, aber die Open-Source-Version sucht hier aktiv nach Möglichkeiten. BEARBEITEN: Die Async-Unterstützung in EF ist unter http://msdn.microsoft.com/en-us/data/jj819165.aspx dokumentiert. Die Ergebnisse werden nicht gestreamt, da sie hydriert sind (wie bei RX), aber die Datenbank ruft asynchrone Aufrufe auf. Wie bei LINQ to SQL, würde ich außerhalb von Wrapping Ihrer Anfrage in einer Task.Factory.Start-Operation nicht die Luft anhalten, in der Hoffnung, dass aufgabenbasiertes async (erforderlich für async/await) von Microsoft für Linq implementiert wird zu SQL.
Sie könnten das IQToolkit verwenden und es erweitern, indem Sie Ihre eigene asynchrone Unterstützung hinzufügen, wenn es absolut notwendig ist. Außerdem hat Mono LINQ to SQL implementiert, das Sie möglicherweise mit async-Unterstützung erweitern können.
Scott Hanselman hat eine interesting post, wo er demonstriert, wie man eine async API über eine vorhandene Linq zu SQL-Abfrage erstellen konnte. Ich habe keine Zeit, um mit der Idee herumzuspielen, aber ich vermute, dass man eine allgemeinere Erweiterungsmethode erstellen könnte, die dieselbe Technik auf jedes Objekt vom Typ IQueryable oder IEnumerable erweitern würde.
Hier ist der Code direkt von seinem Beitrag als Referenz zu verwenden.
Mit ein bisschen Arbeit könnte man diese TPL machen und ebenfalls noch sauberer als eine einzige asynchrone Methode. Wenn ich die Möglichkeit habe, genau das zu tun, werde ich posten, was mir einfällt.
Vielleicht ist es möglich, etwas Wrapper oder etwas zu erstellen? Übrigens, hat die neueste EF Unterstützung für async/erwarten? – UserControl