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