[英]How to use EF Core extension methods asynchronously
我有一個帶有表達式的過濾器方法,如下所示:
public IQueryable<Alert> GetAlerts(Expression<Func<Alert, bool>> filter, bool includeDone = false)
{
var query = _patientDbContext.Alerts
.Where(filter);
if (!includeDone)
{
query = query.Where(i => !i.IsDone);
}
query = query.OrderBy(i => i.Deadline);
return query;
}
但是現在我想在實際的函數中調用這個過濾方法
public async Task<List<Alert>> GetAllAlertsForOrganisation(int organisationId, DateTime? beginDate, DateTime? endDate)
{
var query2 = GetAlerts(i => i.OrganisationId == organisationId && (beginDate == null || i.CreatedAt <= endDate) &&
(endDate == null || i.CreatedAt >= beginDate)).ToList();
return await ....//What to call the GetAlerts method?
.ToListAsync();
}
這是異步的:
var query2 = GetAlerts(i => i.OrganisationId == organisationId && (beginDate == null || i.CreatedAt <= endDate) && (endDate == null || i.CreatedAt >= beginDate));
return await query2.ToListAsync();
正如@weichch 所提到的, GetAlerts
不會在數據庫中執行任何操作:
Entity Framework Core 提供了一組類似於 LINQ 方法的異步擴展方法,它們執行查詢並返回結果。 示例包括 ToListAsync()、ToArrayAsync()、SingleAsync()。 某些 LINQ 運算符(例如 Where(...) 或 OrderBy(...))沒有異步版本,因為這些方法僅構建 LINQ 表達式樹,不會導致在數據庫中執行查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.