【问题标题】:Can not use .ToListAsync() extension method (.net 4.7)不能使用 .ToListAsync() 扩展方法(.net 4.7)
【发布时间】:2018-01-21 23:31:34
【问题描述】:

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

我的设置如下:

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

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

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

谢谢!

【问题讨论】:

  • 你想在哪个项目中使用该方法?网络或数据访问?
  • @DavidG 我试图在我的Web 项目中使用它
  • 网络项目是否引用EntityFramework.dll
  • @DavidG 不。我正在引用 DataAccess 引用 EntityFramework 的项目

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢。这是否意味着我也必须在 web 项目中安装EntityFrameWork?如果是这样,有没有办法以某种方式隔离这种依赖关系?
  • 是的,也安装在那里。这没有任何缺点,因为它已经是您解决方案的一部分。
【解决方案2】:

虽然通过引用 EntityFramework.dll 和 using System.Data.Entity; 可以使用 .ToListAsync() 方法,但它仅适用于实现 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;

【讨论】:

  • 哈哈它没有。大卫,您提交答案时,我正在输入此内容。你打了我一拳。好东西大卫!
猜你喜欢
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
相关资源
最近更新 更多