2017-01-13 157 views
1

我正在開發一個web api,並且我有一些來自EF的異步方法。我所有的例子閱讀在互聯網上展示簡單的調用或snipets,但不是我期待的......所以,這是我的問題:在等待裏面另一個等待

我在我的倉庫類此方法:

public async Task SaveBook(Book book) 
{ 
    var dbLibro = _libroConverter.Convert(libro); 

    using (_migraPleContext) 
    { 
     _migraPleContext.Libro.Add(dbLibro); 
     await _migraPleContext.SaveChangesAsync(); 
    } 
} 

然後,我有另一個類調用我的倉庫......因爲,從我的存儲庫中的方法是異步的,我把它叫做這樣:

var libroDb = _libroConverter.Convert(libro); 
await _libroRepository.GuardarLibro(libroDb); 

我的問題是,如果這種做法是正確的。我在我的處理程序類中使用await,另一個在我的存儲庫類中等待,我不確定這是否是一種好的做法,或者它是否會對性能產生影響。

+0

我沒有看到兩個片段之間的鏈接。 「GuardarLibro」是否被翻譯爲「SaveBook」? – Rob

+0

嗨羅布,是的,這是我的不好,我應該從一開始就使用GuardarLibro。 – trololog85

回答

3

這是可以使用async/await的一種正確方法。

如果您不需要上下文捕獲,您也可以考慮在每個可等待的Task上調用.ConfigureAwait(false);

+0

感謝Russ的反饋。 ConfigureAwait是否改進了性能? – trololog85

+0

@ trololog85是的,性能_should_也可以稍微好一些,使用'ConfigureAwait(false)' –