[英]Mongo DB C# Driver 2.0 Synchronous Count
我需要使用尚未切换为异步的旧控制器来计算与过滤器匹配的项目。 我们有一个关于如何执行此操作的异步答案 :
long result = await collection.CountAsync(Builders<Hamster>.Filter.Eq(_ => _.Name, "bar"));
我还在MongodDb网站上找到了一篇介绍2.0 .NET驱动程序的文章,该文章的评论似乎证实这是不可能的:
- 它只是异步:这是真的。 新API只有异步(例如微软的HttpClient)。 通常,异步编程很容易,并且无需大量线程即可实现更高的服务器吞吐量。 我们正在考虑是否也应该支持同步API,虽然我们已经得到了一些请求(包括你的),但一般用户似乎都渴望使用异步编程。
尽管如此,我想问一下是否有办法做到这一点/一个确认,如果不使控制器方法异步(及其所有助手),这是不可能的。
由于驱动程序的v2.2存在所有异步方法的同步重载,因此您应该使用它们而不是在异步API上阻塞。 这样做性能较差,可能会导致死锁:
long countOfItemsMatchingFilter = yourCollectionName.Count(yourFilterName);
嗯......这很容易 - 我忘了你可以只是用户。 .Result
绕过整个“没有await
同步方法”的事情:
long countOfItemsMatchingFilter = yourCollectionName.CountAsync(yourFilterName).Result;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.