【问题标题】:RavenDb : LoadAsync with Include returns nullRavenDb:带 Include 的 LoadAsync 返回 null
【发布时间】:2016-11-26 22:02:13
【问题描述】:

当我遇到问题时,我正在我的项目中添加一些异步调用。 Session 和 AsyncSession 之间的相同调用不会返回我的文档。

这里是文档:

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;
}

User 和 Company 是我的 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

我不明白为什么它不起作用。

在寻找答案的过程中,我发现MultiLoaderWithIncludeAsyncMultiLoaderWithInclude 的实现之间存在细微差别。我不知道这些课程能否解决我的问题。

【问题讨论】:

标签: ravendb


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 2017-01-07
      • 2012-02-02
      相关资源
      最近更新 更多