Mongodb c#库异步

时间:2013-01-18 02:50:56

标签: c# mongodb mongodb-.net-driver

我正在使用ASP.net Web API和MongoDB来创建一个简单的服务。

我正在使用官方的Mongodb C#库。

如何让它成为异步?我认为官方Mongodb C#库不支持Async。

我可以只设置控制器Async而不是select语句吗?

控制器:

 public IQueryable<Test> GetAllPlaces()
 {
     return _test.GetAllPlaces().AsQueryable();
 }

从mongodb数据库中选择:

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

谢谢。

3 个答案:

答案 0 :(得分:4)

有点老问题,但C#的完整异步MongoDB驱动程序将于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

2015年4月2日更新:

2.0已经出局了!:Nuget Link 但请注意,目前还不支持异步GridFS,您需要继续使用legacy package来使用它,直到它们发布它,可能在version 2.1

(感谢paqogomez的抬头)

答案 1 :(得分:3)

虽然您可以使其异步,但这样做不会为您提供任何真正的性能提升,因为底层库不是Async。还有更多内容,并且描述得很好here。一般的答案是“不”。

答案 2 :(得分:1)

在这里跳过一个旧线程,但是在C#中你可以让你的查询以SafeMode.False作为参数运行,(我相信它实际上是默认关闭的),这将以火灾和遗忘的方式执行它们。 / p>

我的大多数东西的代码都是这样的:

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

因为我需要安全模式。但是如果你把它设置为假或者把那个参数留下来,你就会得到火,忘记功能。