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