DbSet<> 不包含 GetAwaiter 的定义



我有一种让我头疼的搜索方法

var query = await dbContext.Tasks; // Gets the error here!

我该怎么解决这个问题?

这是我的代码:

public static async Task<IEnumerable<BKR.BOL.Task>> Search(string Name, string Description)
        {
            MyDbContext dbContext = new BKR.DAL.Context.MyDbContext();
            var query = await dbContext.Tasks; // Gets the error here!
            if (!string.IsNullOrEmpty(Name))
            {
                query = query.Where(x => x.Name == Name).ToList();
            }
            if (!string.IsNullOrEmpty(Description))
            {
                query = query.Where(x => x.Description == Description).ToList();
            }
            return MapToBOL(query, dbContext);
        }
public static List<BKR.BOL.Task> MapToBOL(IList<DAL.Task> data, MyDbContext db)
{
var query = from d in data
select new Task(d, db)
{
TaskId = d.TaskId,
TaskTypeId = d.TaskTypeId,
TaskStatusId = d.TaskStatusId,
CustomerId = d.CustomerId,
ResourceId = d.ResourceId,
Deleted = d.Deleted,
Name = d.Name,
Description = d.Description,
StartTime = d.StartTime,
EndTime = d.EndTime,
CreatedBy = d.CreatedBy,
CreationTime = d.CreationTime,
ChangedBy = d.ChangedBy,
ChangedTime = d.ChangedTime
};
return query.ToList();
}

dbContext.Taskstask对象的集合,而不是查询,并且不可用。

如果你想要数据,你需要创建一个查询,比如…

var query = await dbContext.Tasks.ToListAsync();

请注意,ToListAsync返回一个Task(内置的,而不是您的数据库类型(,因此是不可用的。

如果你想处理多个Where子句,你可以这样做。。。

var query = dbContext.Tasks;
if (something) {
query = query.Where(t => t.Id == "Ferret")
}
// Other clauses can go here
var results = await query.ToListAsync();

我已经找到了这个解决方案。。。。。你觉得怎么样?

public static async Task<List<BKR.BOL.Task>> Search(bool Deleted, string Name, string Description, System.DateTime? StartTime, System.DateTime? EndTime, System.DateTime CreationTime, System.DateTime? ChangedTime)
{
MyDbContext dbContext = new BKR.DAL.Context.MyDbContext();
var query = dbContext.Tasks.AsQueryable();
if (!string.IsNullOrEmpty(Name))
{
query = query.Where(x => x.Name == Name);
}
if (!string.IsNullOrEmpty(Description))
{
query = query.Where(x => x.Description == Description);
}
return await MapToBOLAsync(query, dbContext);
}

public static Task<List<BKR.BOL.Task>> MapToBOLAsync(IQueryable<DAL.Task> data, MyDbContext db)
{
var query = from d in data
select new Task(d, db)
{
TaskId = d.TaskId,
TaskTypeId = d.TaskTypeId,
TaskStatusId = d.TaskStatusId,
CustomerId = d.CustomerId,
ResourceId = d.ResourceId,
Deleted = d.Deleted,
Name = d.Name,
Description = d.Description,
StartTime = d.StartTime,
EndTime = d.EndTime,
CreatedBy = d.CreatedBy,
CreationTime = d.CreationTime,
ChangedBy = d.ChangedBy,
ChangedTime = d.ChangedTime
};
return query.ToListAsync();
}

最新更新