接收POST请求时插入数据库的正确方法

时间:2017-11-07 03:59:51

标签: c#

我的松弛应用程序当前发送附带消息的按钮。只要点击一个按钮,它就会发送一个帖子请求。如果按钮的附加值为true,则会将值保存到数据库。

该按钮的工作方式是,当任何用户首次点击该按钮时,它会回复一个状态为“确认”并显示“"正确"”的消息,随后会发出任何问题"问题已经回答了#34;

我遇到的问题是,如果有多个人点击按钮,其附加值大致同时设置为true。它将全部响应"正确"。请问我应该如何回应帖子请求以及如何插入数据库sequentially以便只发送一个正确的信息。

当前代码

public async Task<ActionResult> Post()
{
    var payload = Request.Form.FirstOrDefault(x => x.Key == "payload");
    bool value= JsonConvert.DeserializeObject<RootObject>(payload.Value);
    using (var contexts = new TriviaBotDbContextFactory().CreateDbContext(null))
    {
        if (value)
        {
            // return if 
            var item = contexts.Questions.Include(x => x.Guesses).First(x => x.Id == question.Id);

            if (item.Guesses.Any(y => y.Correct))
                return StatusCode(200);

            // Send Message Code
            SBMClient client = new SBMClient(webHook);
            Message msg = new Message("Correct");
            client.Send(msg);

            // Save to database
            item.Guesses.Add(new Answer
            {
                Correct = true,
                User = button.user.name
            });

            await contexts.SaveChangesAsync();
        }   
    }

    return StatusCode(200);
}

0 个答案:

没有答案