我正在使用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();
}
谢谢。
答案 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);
因为我需要安全模式。但是如果你把它设置为假或者把那个参数留下来,你就会得到火,忘记功能。