【发布时间】:2020-01-14 07:23:34
【问题描述】:
我已将存储过程导入到我的 EF6 数据模型中。现在我想异步调用它,但似乎 EF 没有创建 SP 的 Async 版本。我错过了什么吗?
db.CallMyProcedure(param);
// vs
await db.CallMyProcedureAsync(param);
【问题讨论】:
-
没有。只是数据库优先 (EDMX) 在 async-await 尚不存在且以后从未添加该选项时已成为过时的技术。
-
我从未尝试过,但等待 Task.Run(() => db.CallMyProcedure(param));你的目标还不够吗?
-
@Miite:
await Task.Run将在后台线程上调用相同的同步CallMyProcedure,这与调用异步方法不同。不过,您可以使用它从调用线程中卸载阻塞工作。 -
@GertArnold 这是我公司现在使用的技术,所以我真的别无选择。我们当前的工作流程是先创建一个 Visual Studio 数据库项目,放下所有的表、视图和存储过程,将其发布到我们的数据库服务器,然后从中创建一个模型。
-
@mm8 使用此 SPC 的方法只是一个 SignalR 包装器。我不认为在它周围加上
Task.Run会使它变得更好。
标签: c# sql-server entity-framework async-await