2017-07-17 14 views
-1

私はエンティティフレームワークとasp.net Web APIを使用しています。私は以下のメソッドを非同期にしたいが、次のコードでどこで待つべきかわからない。asp.net webapi postメソッドで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

'待つentity.SaveChangesAsync();' – tymeJV

+1

と 'int型PRID =)がentity.Persons.Where(....)は(=> per.Person_IDにつき).FirstAsyncを(選択待つ;'すぎ:) – CodeNotFound

+1

[\ async \と\ 'await \']を使用する方法とタイミングの複製(https://stackoverflow.com/questions/14455293/how-and-when-to-use-async-and) -待つ) – Igor

答えて

1

あなたのコードスニペットを待つことができる可能な場所(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(); 
    }   
} 
関連する問題