RavenDb : LoadAsync with Include returns null



我在遇到问题时在项目中添加了一些异步调用。会话和异步之间的相同电话不会返回我的文档。

这里的文档:

class Company {
    string Id;
    string Name;
    BusinessUnit BusinessUnit;
}
class BusinessUnit {
    string Name;
    List<BusinessUnit> BusinessUnits;
    List<Employee> Employees;
}
class Employee {
    string Position;
    string UserId;
}
class User {
    string Id;
    string FullName;
}

用户和公司是我的Ravendb中的两个收藏品。如您所见,我们的文档公司有一个业务部门。因此,当我想加载公司时,我会打电话:

var company = Session.Include<Employee, User>(x => x.UserId)
    .Load<Company>(companyId); //Working like a charm

但是,当我尝试使用async做同样的事情时:

var company = await AsyncSession.Include<Employee, User>(x => x.UserId)
    .LoadAsync<Company>(companyId); //company is null
var company = await AsyncSession.LoadAsync<Company>(companyId); //This is working

我看不出为什么它不起作用。

在我搜索答案时,我发现多载荷Withincude和Asyncmultiloaderwithinclude的实现之间存在很小的区别。我不知道这些课程是否可以解决我的问题。

感谢您的失败测试。根本的原因是您在其中使用字段,而不是属性。这是客户端中的一个错误,将很快修复,但与此同时,您可以使用属性并完全避免。

这不会在单个请求中加载相关的用户文档。您可以做这样的事情:

var company = session.Include<Company, User>(x => x.BusinessUnit.Employees.Select(y => y.UserId)).Load<Company>(companyId);

最新更新