2013-01-18 36 views
4

我使用ASP.net Web API和MongoDB創建一個簡單的服務。Mongodb c#庫異步

我使用官方的Mongodb C#庫。

我如何使它異步?我認爲官方的Mongodb C#庫不支持異步。

我可以只使控制器異步,但不是選擇語句?

控制器:

從mongodb的數據庫
public IQueryable<Test> GetAllPlaces() 
{ 
    return _test.GetAllPlaces().AsQueryable(); 
} 

選擇:

public IEnumerable<Test> GetAllPlaces() 
{ 
    return _test.FindAll(); 
} 

謝謝。

+0

最新的2.0版本完全支持異步操作,看看。 – XtremeBytes

回答

3

雖然你可以使它異步,這樣做不會提供任何實際的性能收益,因爲底層庫不是異步。還有很多,它被描述得很好here。一般的答案是「不」。

4

位老問題,而是一個完整的異步MongoDB的驅動程序,C#是即將在2013年11月:

https://jira.mongodb.org/browse/CSHARP-138

編輯 - 正如尤金說,司機仍處於開發階段。有在Github上一些實驗項目,在我們等待官方的一個

https://github.com/rstam/mongo-async-csharp-driver https://github.com/andrebires/mongo-csharp-driver

02-APR-2015更新:

2.0是出!:Nuget Link 但要知道,異步GridFS尚不支持,你需要繼續使用legacy package來處理它,直到他們釋放它,可能在version 2.1

(謝謝paqogomez的擡頭)

+0

異步支持的更新時間表爲** 2014年第一季度**: 來自Craig Wilson評論: ...我們還沒有ETA,但它很可能是2014年第一季度。此外,異步將會僅支持.NET 4.5。 –

+0

[2.0 is now out](http://api.mongodb.org/csharp/2.0/html/R_Project_CSharpDriverDocs.htm) – paqogomez

1

在這裏跳過一箇舊的線程,但在C#中的FYI可以讓您的查詢以SafeMode.False作爲參數運行(我相信它實際上是關閉的),它將在消防和忘記的方式。

我的大部分我的東西代碼如下所示:

IMongoQuery query = Query.EQ("_id", Path); 
IMongoUpdate update = Update.Set("Key", "value"); 
SafeModeResult oCmd = mCollection.Update(query, update, SafeMode.True); 

,因爲我需要安全模式。但是,如果將其設置爲false或將該參數設置爲out,則會發生火災並遺忘功能。