クエリでトランスフォーマーを使用して実行しようとする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();
Member
class にキャストできないと言われましたMiniMember
。
私は RavenDB ドキュメントの例に非常に厳密に従っていますが、それでもこの結果を受け取るので、これについて非常に混乱しています。