可以說我有一個簡單的倉儲類,一個GetByNames
方法現在如何空車返回的IQueryable在異步庫方法
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));
}
}
,當我與異步的EntityFramework ToListAsync()
擴展使用它
var myObjects = awawit new MyRepo(_db).GetByNames(names).ToListAsync();
如果我通過空列表或空因爲它會炸掉,因爲Enumerable.Empty<MyObject>().AsQueryable()
沒有實現IDbAsyncEnumerable<MyObject>
接口。
源IQueryable不實現IDbAsyncEnumerable。只有實現IDbAsyncEnumerable的源才能用於實體框架異步操作。欲瞭解更多詳情,請參閱http://go.microsoft.com/fwlink/?LinkId=287068。
所以我的問題是,我怎麼能返回一個空IQueryable<>
實現IDbAsyncEnumerable
,而無需訪問數據庫?
我會忍不住拋出一個異常,如果該參數是'null'並調用查詢,如果數組爲空。 – DavidG
http://stackoverflow.com/a/26330298/870604 – ken2k