如何执行 EF Database.ExecuteSQLCommand 异步?
Posted
技术标签:
【中文标题】如何执行 EF Database.ExecuteSQLCommand 异步?【英文标题】:How do I do an EF Database.ExecuteSQLCommand async? 【发布时间】:2014-12-13 16:52:48 【问题描述】:这是我正在使用的代码:
public async Task<IHttpActionResult> NewTopicTests([FromBody] NewTopicTestsDTO testSpec)
var sql = @"dbo.sp_new_topic_tests @Chunk";
SqlParameter[] parameters = new SqlParameter[]
new SqlParameter("@Chunk", testSpec.Chunk)
;
int result = db.Database.ExecuteSqlCommand(sql, parameters);
await db.SaveChangesAsync();
return Ok();
有人可以确认这是否是使用异步执行此操作的正确方法吗?我特别需要这样做:
int result = db.Database.ExecuteSqlCommand(sql, parameters);
await db.SaveChangesAsync();
请注意,代码可以正常工作,但是我的应用程序出现问题,它突然停止而没有任何错误消息。我正在研究每一个可能的问题。
【问题讨论】:
【参考方案1】:这里保存了什么?我认为这里没有必要调用保存更改。
删除保存更改,您将看到相同的行为,因为您在存储过程中所做的任何更改都不会被实体框架上下文跟踪。
你可以重写你的代码如下:
int result = await db.Database.ExecuteSqlCommandAsync(sql, parameters);
您是否检查了每个地方以找到问题的原因? Windows 错误日志等?
转到 Visual Studio IDE 的 Debug 菜单,打开 Exceptions,然后检查 'throw' 和 'user_unhandled' 是否有 'Common Language Runtime Exceptions' 并再次测试您的代码。
【讨论】:
感谢您对 VS 检查内容的建议以上是关于如何执行 EF Database.ExecuteSQLCommand 异步?的主要内容,如果未能解决你的问题,请参考以下文章