如何进行EF Database.ExecuteSQLCommand异步?

Sam*_*tar 2 sql-server asp.net entity-framework asp.net-web-api entity-framework-6

这是我正在使用的代码:

    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();
    }
Run Code Online (Sandbox Code Playgroud)

有人可以确认这是否是使用异步执行此操作的正确方法?特别是我需要这样做:

        int result = db.Database.ExecuteSqlCommand(sql, parameters);
        await db.SaveChangesAsync();
Run Code Online (Sandbox Code Playgroud)

请注意,代码有效,但我的应用程序出现问题,突然停止,没有任何错误消息.我正在调查每一个可能的问题.

Yas*_*adi 7

在这里保存了什么?我认为没有必要在这里调用保存更改.

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

您可以按如下方式重写代码:

int result = await db.Database.ExecuteSqlCommandAsync(sql, parameters);
Run Code Online (Sandbox Code Playgroud)

你有没有检查过哪里找到问题的原因?Windows错误日志等?

转到Visual Studio IDE的Debug菜单,打开Exceptions,然后检查'common'和'user_unhandled'是否为'Common Language Runtime Exceptions'并再次测试你的代码.