2017-12-20 14 views
0

RavenDBを初めて使用しています。私はRavenDBでmultimapindexを作成しようと下のマップのいずれかであるのです。Ravendb multimapindexの不完全な結果

this.AddMap<ProposedData>(proposedDatas => 
             from psd in proposedDatas 
             let pgds = psd.PropertyGroupValues.Select(pgv => this.LoadDocument<PropertyGroupDefinition>($"PropertyGroupDefinitions/{pgv.DefinitionId}")) 
             let propertyDefs = pgds.SelectMany(pgd => pgd.PropertyDefinitions) 
             let propertyVals = psd.PropertyGroupValues.SelectMany(pgv => pgv.PropertyValues.SelectMany(pv => propertyDefs.Where(pd => pd.Id == pv.DefinitionId).Select(pd => new { Value = this.AsDocument(pv).Value<object>("Value"), TagName = pd.TagName }))) 
             from property in propertyVals 
             select new Result 
             { 
              Id = psd.Id.ToString().Replace("ProposedDatas/", ""), 
              HasApprovedVersion = false, 
              Value = property.Value, 
              TagName = property.TagName 
             }); 

これは、インデックスを作成していますが、すべての値とのTagNameが含まれていません。しかし、私が使用すると、代わりに私が探しているTagNameの完全なリストを持っています

私はRavenDB v3を使用しています。私が何か悪いことをしているかどうか教えてください。

は、以下の私の結果の構造である:私は結合を使用しようとした

public class Result 
    { 
     public bool HasApprovedVersion { get; set; } 
     public string Id { get; set; } 
     public object Value { get; set; } 
     public string TagName { get; set; } 
    } 

P.Sが、例外が発生しました。

ありがとうございました。

+0

私がjoinを使用したときにスローされる例外は、AggregateException "デリゲートまたは式ツリータイプにキャストしないで、ラムダ式を動的ディスパッチ処理の引数として使用できません" – lokesh

+0

クエリから '2'を書くことは可能ですか? – lokesh

答えて

0

2つのfromを書き込むことはお勧めしませんが、サポートされています。可能性のある問題は、インデックスの複雑さです。なぜなら、我々が相手側の意味を再構成しようとしているからです。 一般に、ファンアウトの使用を避け、ドキュメントごとに1つのエントリを持つ方が良いです。

関連する問題