这是我正在使用的代码:
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();
请注意,代码有效,但我的应用程序出现问题,突然停止,没有任何错误消息。我正在调查每一个可能的问题。
答案 0 :(得分:7)
这里保存了什么?我认为没有必要在这里调用保存更改。
删除保存更改,您将看到相同的行为,因为您在存储过程中所做的任何更改都不会被实体框架上下文跟踪。
您可以按以下方式重写代码:
int result = await db.Database.ExecuteSqlCommandAsync(sql, parameters);
您是否检查过哪里可以找到问题的原因? Windows错误日志等?
转到Visual Studio IDE的Debug菜单,打开Exceptions,然后检查'throw'和'user_unhandled'是否为'Common Language Runtime Exceptions'并再次测试你的代码。