EF6 alpha 异步等待实体存储过程/函数导入?

2023-12-04

我想将新的 async wait 功能应用到实体模型中导入的存储过程/函数导入,但目前还无法使用 EF6 alpha。

是否可以在 EF6 alpha2(或自 20211 起的夜间构建)中调用返回复杂类型集合的实体函数导入(调用 SQL 存储过程)上的任何新异步方法?例如

private async Task<IList<Company>> getInfo (string id)
{
    using (CustomEntity context = new CustomEntity())
    {
        var query = await context.customStoredProcedure(id).ToListAsync();
        // ".ToListAsync()" method not available on above line

        // OR ALTERNATIVELY
        var query = await (from c in context.customStoredProcedure(id)
                           select new Company
                           {
                              Ident = c.id,
                              Name = c.name,
                              Country = c.country,
                              Sector = c.sector, 
                              etc. etc....
                           }).ToListAsync();
        // ".ToListAsync()" method or any "...Async" methods also not available this way

        return query;
    }
}

“ToListAsync”或任何新的异步修改方法似乎不适用于上述实体存储过程/函数导入;只有标准的“ToList”或“AsNumerable”等方法可用。

我遵循了这个(http://entityframework.codeplex.com/wikipage?title=Updating%20Applications%20to%20use%20EF6)以确保代码引用新的 EF6 dll 而不是 EF5,并更新了各种 using 语句。除了上面的内容之外,一切都正确构建。 (.NET 框架 4.5)

我唯一能看到异步方法的情况是,我不仅从数据库导入存储过程,还导入一个表——然后,当通过上面的实体上下文 (context.SomeTable) 引用该表时,一些异步方法出现在智能感知中。

我真的很想在将数据作为 JSON 返回之前开始在多个存储过程上使用新的 async wait 功能,但到目前为止还无法让它工作。

难道我做错了什么?实体存储过程/函数导入无法使用异步功能吗?谢谢你的建议。


现在这绝不是最好的解决方案。我添加了一个扩展方法,以便我可以在存储过程上调用await。在 EF6.1+ 的新版本中,我们应该会看到这一点被正式实现。在那之前,虚拟扩展方法会完成这项工作。

static async Task<List<T>> ToListAsync<T>(this ObjectResult<T> source)
{
    var list = new List<T>();
    await Task.Run(() => list.AddRange(source.ToList()));
    return list;
}

如果您反映 EF 版本 6,您会看到ObjectResult<T>实际上实现了IDbAsyncEnumerable<T>, IDbAsyncEnumerable。以及方法ToListAsync<T>(this IDbAsyncEnumerable<T> source)应该能够像 LINQ 查询一样连接它。

Edit当 ObjectResult 为空时,返回 null。你可以添加if (source == null) return new List<T>();如果你想返回一个空列表而不是 null。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF6 alpha 异步等待实体存储过程/函数导入? 的相关文章

  • 在异步方法中显示错误消息的更好方法

    事实上我们不能使用await关键字在catch块使得在 WinRT 中显示来自异步方法的错误消息变得非常尴尬 因为MessageDialogAPI 是异步的 理想情况下我希望能够这样写 private async Task DoSometh
  • 找不到实体框架数据提供程序,entityclient

    首先 我发现许多问题和许多答案与我的问题相关或被认为与我的问题相同 但似乎没有什么对我有用 我有一个全新的模板化 MVC4 网站 全新安装的 sql server 2008 r2 中有一个全新的数据库 我在数据库上运行 aspnet reg
  • VS 2012 中缺少实体数据模型

    添加新项目时 我在 数据 选项卡下找不到实体数据模型 我查看了几个问题和答案以及有关此问题的信息 但没有一个解决方案有效 我已修复 卸载并重新安装 手动安装 EF Tools 包并尝试卸载所有 VS 相关程序 我还尝试在不同的 NET 框架
  • 在 Razor Pages 中使用 @functions 块的错误和警告

    因为 helperASP NET Core Razor Pages 不再支持指令 我一直在使用 functions指令代替 functions void RenderTask Models Task task tr td class p c
  • 使用 DbContext 进行模型优先,无法初始化新数据库

    我放弃 我找到了这个 http blogs msdn com b adonet archive 2011 03 15 ef 4 1 model amp database first walkthrough aspx http blogs m
  • 如何使用 C#8 IAsyncEnumerable 异步枚举并行运行的任务

    如果可能的话 我想为并行启动的任务创建一个异步枚举器 因此 首先完成的是枚举的第一个元素 第二个完成的是枚举的第二个元素 依此类推 public static async IAsyncEnumerable
  • 抑制实体框架核心中的 SQL 查询日志记录

    我有一个使用实体框架核心的控制台 net core 应用程序 该应用程序使用日志框架写入文件和控制台 serviceProvider new ServiceCollection AddLogging AddDbContext
  • .NET 实体框架核心

    我已经阅读了过去两年中发布的几乎所有有关 EF 的其他问题 我下载其他软件包没有任何问题 只是实体框架不会为我安装 我什至尝试安装最新版本的 Nuget 并在我的项目目录中使用它的工具来恢复包 之后 我将这一行添加到我的 csproj 中
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 如何在 VSCode 调试器中执行异步函数? [复制]

    这个问题在这里已经有答案了 如果我在一些 javascript 代码中放入 VSCode 调试器并使用 wait 调用异步函数 它只会返回一个承诺 如何解决调试器中的承诺 以便我可以看到结果是什么 例如 如果我定义一个像这样的函数 cons
  • 使用 async/await 抛出和捕获异常的正确方法

    全部请拿下面的二维码 Task
  • 忽略 Entity Framework 6 中除部分属性外的所有属性

    我想使用实体框架在数据库中保留一些数据 我有一些更大的 POCO 但我只想存储一些属性 我知道我可以通过Fluent API通过使用Ignore 方法 但是是否也有可能不仅忽略已定义的属性 而且还忽略除已定义属性之外的所有属性 所以如果你有
  • 使用实体框架时是否应该使用部分类作为业务层?

    我正在开发一个使用实体框架的项目 使用EF生成的类的部分类作为业务层可以吗 我开始认为这就是 EF 的用途 我尝试使用 DTO 模式 很快意识到我只是创建了一堆映射类 这重复了我的工作 而且还导致更多的维护工作和额外的层 我想使用自我跟踪实
  • 将平面集合转换为层次集合的递归方法?

    我已经被这个问题困扰了几天 希望得到一些想法或帮助解决它 我有一个对象集合 public class Hierarchy public Hierarchy string iD string name int level string par
  • 实体框架中的实体图是什么?

    我一直在研究一些实体框架教程 并且遇到了这个词实体图 我对这个术语及其用法还没有清楚的了解 任何人都可以提供有关此主题的信息 例如它是什么及其在实体框架上下文中的用途 当实例化的对象以某种关系连接在一起时 它们被称为 图或实体图 实体框架有
  • 如何在实体框架中完全锁定一行

    我正在处理的情况是我们正在处理金钱交易 例如 我有一个用户钱包表 其余额位于该行 UserId Wallet Id Balance 现在 在我们的网站和网络服务中 每次发生特定交易时 我们都需要 检查是否有足够的资金可用于执行该交易 从余额
  • 如何在Azure Function的应用程序设置中定义providername属性

    我正在尝试在我的 Azure 函数中建立实体框架数据库连接 因此我需要在函数的应用程序设置中定义一个连接字符串 仅在 Azure 门户中添加一个以我的 DbContext 类名作为键的连接字符串会导致异常 因为连接到数据库时 provide
  • 提供者未返回 ProviderManifest 实例

    当我想配置我的数据源 EntityDataSource 1 并将实体数据模型自动生成的连接字符串分配给它时 我收到错误 无法加载连接字符串中指定的元数据 请考虑重建 Web 项目以构建可能包含元数据的程序集 发生以下错误 提供程序未返回 P
  • C# 中处理 SQL 死锁的模式?

    我正在用 C 编写一个访问 SQL Server 2005 数据库的应用程序 该应用程序是数据库密集型的 即使我尝试优化所有访问 设置适当的索引等 我预计迟早会遇到死锁 我知道为什么会发生数据库死锁 但我怀疑我能否在某个时候发布不发生死锁的
  • 无法通过 LINQ to Entities 使用某些功能?

    我正在尝试使用 LINQ 查询在项目上实现搜索功能 由于数据有时包含带有重音符号和其他符号的字符 因此我创建了一种方法来删除这些字符以进行搜索 这是我的代码 var addresses from a in db Addresses join

随机推荐