不能使用 .ToListAsync() 扩展方法 (.net 4.7).



我正在尝试使用扩展方法.ToListAsync()但由于某种原因,此扩展方法对我不可用。

我的设置如下:

  • Web 项目 (.Net 4.7) 在这里我确实包括了using System.Data.Entity;
  • DataAcess Project (.Net 4.7) 在这里我插Entity Frame Work v6.2

我的 Web 项目引用了我的 DataAccess 项目。

我不确定我哪里出错了。有人可以建议吗?

谢谢!

ToListAsync方法是QueryableExtensions类的一部分,该类位于System.Data.Entity命名空间中,也是EntityFramework.dll库的一部分。这意味着您需要导入命名空间(即using System.Data.Entity;)以及参考EntityFramework.dll

请注意,在经典的 .Net Framework 项目中,引用不是可传递的。换句话说,如果要使用库中的类,则必须在每个项目中引用它。不过,这在.Net Core中已经发生了变化。

虽然.ToListAsync()方法通过引用 Entity.dll Framework 和using System.Data.Entity;来实现,但它仅适用于实现IQueryable接口的类型。

使用它的示例:

private async Task<List<Book>> GetAllBooksAsync() {
var books = new List<Book>();
var query = from item in books select item;
return await query.AsQueryable().ToListAsync();
}

请注意,如果看不到ToListAsync()方法,则可能是类中缺少using System.Data.Entity;