Lets sagen, dass ich eine einfache Repository-Klasse habe, mit einer GetByNames
MethodeWie leer IQueryable in einer Asynchron-Repository Methode zurückzukehren
public class MyRepo
{
private readonly MyDbContext _db;
public MyRepo(MyDbContext db)
{
_db = db;
}
public IQueryable<MyObject> GetByNames(IList<string> names)
{
if (names== null || !names.Any())
{
return Enumerable.Empty<MyObject>().AsQueryable();
}
return _db.MyObjects.Where(a => names.Contains(a.Name));
}
}
Nun, wenn ich es mit Asynchron EntityFramework ToListAsync()
Erweiterung verwenden
var myObjects = awawit new MyRepo(_db).GetByNames(names).ToListAsync();
Es wird explodieren, wenn ich leere Liste oder null übergebe, weil Enumerable.Empty<MyObject>().AsQueryable()
IDbAsyncEnumerable<MyObject>
Schnittstelle nicht implementiert.
Die Quelle IQueryable implementiert IDbAsyncEnumerable nicht. Nur Quellen, die IDbAsyncEnumerable implementieren, können für asynchrone Entity Framework-Vorgänge verwendet werden. Für weitere Details siehe http://go.microsoft.com/fwlink/?LinkId=287068.
Also meine Frage ist, wie kann ich eine leere IQueryable<>
zurück, die IDbAsyncEnumerable
implementiert, ohne die Datenbank zu schlagen?
ich versucht sein würde, eine Ausnahme zu werfen, wenn der Parameter 'null' und rufen Sie einfach die Abfrage, wenn das Array leer ist. – DavidG
http://StackOverflow.com/a/26330298/870604 – ken2k