我正在使用ASP.Net Boilerplate。我已經實現了IRepository來創建一個定製的Repository,所以我可以添加一個自定義的方法來從一個存儲過程返回數據。但是,不管我怎麼似乎結構任務,異步或等待組件我收到以下錯誤:從ASPNetBoilerplate中的SqlQuery定製存儲庫訪問ToListAsync()
System.InvalidOperationException: The provider for the source IQueryable doesn't implement IDbAsyncQueryProvider. Only providers that implement IDbAsyncQueryProvider can be used for Entity Framework asynchronous operations. For more details see http://go.microsoft.com/fwlink/?LinkId=287068.
我的倉庫看起來像:
namespace myApp.EntityFramework.Repositories
{
public class TruckRepository : UHaulTrucks.HoustonRepositoryBase<DailyDockQuery>, ITruckRepository
{
public TruckRepository(IDbContextProvider<UHaulHoustonDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public IQueryable<DailyDockQuery> GetDailyDockQuery()
{
var ret = Context.Database.SqlQuery<DailyDockQuery>("exec Central_DailyDockQuery").AsQueryable();
return ret;
}
}
}
我的服務:
public async Task<PagedResultOutput<DailyDockQueryListDto>> GetDailyDockQuery()
{
var query = _truckRepository.GetDailyDockQuery();
var dailyCount = await query.CountAsync();
var dailies = await query.ToListAsync();
var dailiesDtos = dailies.MapTo<List<DailyDockQueryListDto>>();
return new PagedResultOutput<DailyDockQueryListDto>(
dailyCount,
dailiesDtos
);
}
上述錯誤將在任何嘗試執行異步方法時生成,例如:
var dailyCount = await query.CountAsync();
或
var dailies = await query.ToListAsync();
正如我提到我曾嘗試在資源庫和服務與任務,並具有相同的結果異步組合幾種變化。我是以這種方式實現自定義存儲庫的新手,並且懷疑,儘管我應該從IRepository中獲得CountAsync和ToListAsync的好處,但仍需要在自定義類中實現這些優點。
任何幫助,非常感謝。仍然在這裏找到我的方式。
是不是存儲庫什麼失敗,是提供者,你的數據庫連接器。 – Gusman