MongoDB C#驱动程序LINQ查询语法是否缺少异步方法



LINQ 方法语法确实有这样的异步方法

var peter = await peopleCollection.Find(x => x.Name == "Peter").FirstOrDefaultAsync();

但它在查询语法中不存在,如下所示:

var peter = await (from x in collection.AsQueryable()
                   where x.Name == "Peter"
                   select x).FirstOrDefaultAsync(); //COMPILETIME ERROR

这是真的吗?

如果要测试,一个重要的注意事项:如果您引用了实体框架库并具有使用 System.Data.Entity; 语句,则 FirstOrDefaultAsync() 在编译时存在,但它在运行时会给出和错误。

支持FirstOrDefaultAsync(以及许多其他)。我相信您的问题可能是您没有包括定义扩展方法的MongoDB.Driver.Linq。

测试在这里:https://github.com/mongodb/mongo-csharp-driver/blob/master/tests/MongoDB.Driver.Tests/Linq/MongoQueryableTests.cs#L309。

代码在这里: https://github.com/mongodb/mongo-csharp-driver/blob/master/src/MongoDB.Driver/Linq/MongoQueryable.cs

可能,您返回的类型是一个 IQueryable 接口。您应该使用MongoDB.Driver.Linq.IMongoQueryable<T>接口而不是它。

相关内容

最新更新