4

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

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

我怎样才能使它异步?我认为官方的 Mongodb C# 库不支持异步。

我可以只使控制器异步而不是选择语句吗?

控制器:

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

从 mongodb 数据库中选择:

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

谢谢你。

4

3 回答 3

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 尚不支持,您需要继续使用旧包来使用它,直到他们发布它,可能在2.1 版中

(感谢 paqogomez 的提醒)

于 2013-07-31T08:47:18.033 回答
3

虽然您可以使其异步,但这样做不会为您带来任何真正的性能提升,因为底层库不是异步的。它还有很多内容,并且在此处进行了很好的描述。一般的答案是“不”。

于 2013-01-18T12:09:03.823 回答
1

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

我的大部分东西的代码如下所示:

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

因为我需要安全模式。但是,如果您将其设置为 false 或忽略该参数,您就会着火并忘记功能。

于 2014-03-06T21:48:33.900 回答