paq*_*mez 6 .net c# mongodb async-await mongodb-.net-driver
我已经使用1.0和2.0 c#驱动程序为MongoDb 构建了一个示例应用程序.
它们序列化相同的对象,我可以用两者写入并从1.0读取.但是我无法FindAsync在2.0中使用给我任何结果.
这是我的1.0查询,它返回一个文档:
var results = collection.AsQueryable<FlatCatalogItem>()
.FirstOrDefault(c => c.BatchId == "2015.01.27"
&& c.Upcs.Any(u => u.UPC == "123456803"));
Run Code Online (Sandbox Code Playgroud)
我的2.0查询使用相同的数据,FindAsync如下所示:
var task = collection.FindAsync(item => item.BatchId == "2015.01.27"
&& item.Upcs.Any(u => u.UPC == "123456803"));
task.Wait();
var results = task.Result;
Run Code Online (Sandbox Code Playgroud)
该AsyncCursor是从返回结果有什么也没有.
results.MoveNextAsync().Wait(); // results.Current.Count = 0
Run Code Online (Sandbox Code Playgroud)
这可能是我对异步和等待的无知,或者我可能错过了2.0查找方法的其他东西?请注意,我不想使用旧版2.0驱动程序
新API只是async- 你不应该阻止它.它不可扩展,可能导致死锁.用async-await所有的方式或继续使用旧的API.在一个async方法中,查询应如下所示:
async Task Foo()
{
FlatCatalogItem first = await collection.
Find(c => c.BatchId == "2015.01.27" && c.Upcs.Any(u => u.UPC == "123456803")).
FirstOrDefaultAsync();
// use first
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8405 次 |
| 最近记录: |