我找到了一段代码,它正在使用MongoDB驱动程序从集合中获取单个对象…这不可能是对的,不是吗?有没有更好的方法得到这个?

IMongoCollection<ApplicationUser> userCollection;
....
userCollection.FindAsync(x => x.Id == inputId).Result.ToListAsync().Result.Single();

最佳答案

是的,有。
首先不要使用FindAsync,而是使用Find。在IFindFluent结果中,使用SingleAsync扩展方法并在异步方法中等待返回的任务:

async Task MainAsync()
{
    IMongoCollection<ApplicationUser> userCollection = ...;

    var applicationUser = await userCollection.Find(_ => _.Id == inputId).SingleAsync();
}

新驱动程序以独占方式使用async await。不要用Task.Result阻塞它。

关于c# - 在C#中从mongodb获取单个对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31171451/

10-09 22:18