如何在asp.net webapi post方法中使用await

时间:2017-07-17 19:16:32

标签: asp.net-web-api async-await

我正在使用实体框架和asp.net web API。我想使以下方法异步,但我不知道在下面的代码中使用await的位置。

[HttpPost]
public async Task<IHttpActionResult> CreateAccount([FromUri]string fullname, string email, string cnic,string username,string password, string logrol )
{

    using (var entity = new Smock_DBEntities())
    {
        Person pr = new Person();
        pr.Full_Name = fullname;
        pr.Email = email;
        pr.CNIC = cnic;
        entity.Persons.Add(pr);
        entity.SaveChanges();
        int prID = entity.Persons.Where(per => per.CNIC == cnic).Select(per => per.Person_ID).First();

        Login log = new Login();
        log.Person_ID = prID;
        log.Username = username;
        log.Password = password;
        log.Login_Role = logrol;
        entity.Logins.Add(log);
        entity.SaveChanges();

        return Ok();
    }         
}

1 个答案:

答案 0 :(得分:2)

将它作为答案与可能的地方(3个地方)放在一起,你可以等待你的代码片段。

[HttpPost]
public async Task<IHttpActionResult> CreateAccount([FromUri]string fullname, string email, string cnic,string username,string password, string logrol )
{

    using (var entity = new Smock_DBEntities())
    {
        Person pr = new Person();
        pr.Full_Name = fullname;
        pr.Email = email;
        pr.CNIC = cnic;
        entity.Persons.Add(pr);
        await entity.SaveChangesAsync();
        int prID = await entity.Persons.Where(per => per.CNIC == cnic).Select(per => per.Person_ID).FirstAsync();

        Login log = new Login();
        log.Person_ID = prID;
        log.Username = username;
        log.Password = password;
        log.Login_Role = logrol;
        entity.Logins.Add(log);
        await entity.SaveChangesAsync();

        return Ok();
    }         
}