2016-11-24 1 views
1

問題が発生したときにプロジェクトで非同期呼び出しをいくつか追加していました。 SessionとAsyncSession間の同じ呼び出しがドキュメントを返さない。ここでRavenDb:Includeを含むLoadAsyncが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で2つのコレクションです。ご覧のように、私たちは文書会社にビジネスユニットのツリーを持っています。だから私は会社をロードするとき、私はこの呼び出しを行います。

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

が、私は非同期で同じことをしようとしたとき:

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の実装の間に小さな違いがあります。これらのクラスで私の問題が解決できるかどうかはわかりません。

+0

メーリングリストに失敗したテストを提出できますか? これは動作する必要があります。 Loadから返されたものは、Load/Includeから返されます。 ここで失敗したテストを送信する方法を参照してください: http://ravendb.net/docs/article-page/3.5/Csharp/server/troubleshooting/sending-support-ticket –

+0

失敗したテストを投稿しました! – Galhem

答えて

1

不合格のテストをありがとう。根本的な理由は、プロパティではなくフィールドを使用していることです。 これはまもなく修正される予定のクライアントのバグですが、その間にプロパティを使用して完全に回避することができます。

0

これは、関連するユーザー文書を1回の要求で読み込むことはありません。 あなたは次のようなことができます:

var company = session.Include<Company, User>(x => x.BusinessUnit.Employees.Select(y => y.UserId)).Load<Company>(companyId); 
関連する問題