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

时间:2018-01-21 23:31:35

标签: c# .net async-await entity-framework-6

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

我的设置如下:

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

虽然通过引用EntityFramework.dll和containerBottomConstraint.isActive = true 使.ToListAsync()方法可用,但它仅适用于实现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()