2

下面是我使用的代码:如何执行EF Database.ExecuteSQLCommand异步?

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(); 

注意代码工作但是我有我的应用程序有问题的地方突然停止没有任何错误信息。我正在研究每一个可能的问题。

回答

5

这里保存着什么?我认为这里不需要调用保存更改。

删除保存更改,您将看到相同的行为,因为您在存储过程中所做的任何更改都不会被实体框架上下文跟踪。

而且你可以重写你的代码如下:

int result = await db.Database.ExecuteSqlCommandAsync(sql, parameters); 

你检查过的每一个地方找到你的问题的原因是什么? Windows错误日志等?

转到Visual Studio IDE的Debug菜单,打开Exceptions,然后选中'throw'和'user_unhandled'作为'Common Language Runtime Exceptions'并再次测试您的代码。

+0

谢谢你的建议,关于什么与VS检查 – 2014-10-18 05:13:55