2

クエリでトランスフォーマーを使用して実行しようとするRavenDBと、少し奇妙な動作が発生します。

class を仮定するとMember、それはかなり長くて冗長です...

class Member {
   // ...
   // Lots of properties, methods
}

それらのより軽量な結果を得たいだけです。そこで、より小さなクラスを宣言します。

public class MiniMember {
    public string Id { get; set; }
    public string Name { get; set; }
}

でクエリを実行してみてAbstractTransformerCreationTask<T>ください。

public class MemberByNameList : AbstractTransformerCreationTask<Member> {
    public MemberByNameList() {
        TransformResults = members => from member in members
                                     select new MiniMember {
                                         Id = member.Id,
                                         Name = member.Name
                                     };
    }
}

これはサーバー側の Studio UI では正常に機能しますが、.NETコードでこれを実行しようとすると問題が発生します。

        var members = DocumentSession
            .Query<Member>()
            .TransformWith<Indexes.MemberByNameList, MiniMember>()
            .Take(512)
            .ToList();

Memberclass にキャストできないと言われましたMiniMember

私は RavenDB ドキュメントの例に非常に厳密に従っていますが、それでもこの結果を受け取るので、これについて非常に混乱しています。

結果トランスフォーマーに関する RavenDB ドキュメント

4

1 に答える 1