2016-06-14 8 views
0

でネストされたオブジェクトの種類ここでは、セットアップだ上で照会する方法、私はそうのようなイベントのリストを含むオブジェクトを持っている:はRavenDB

public class Order 
{ 
    public string Name {get; set;} 
    public List<OrderEvent> OrderEvents {get; set;} 
    public bool IsComplete() => OrderEvents.Any(e => e.GetType() == typeof(OrderComplete)); 
} 

public class OrderEvent 
{ 
    public DateTime TimeStamp {get; set;} 
} 

public class OrderSubmitted : OrderEvent {...quantity ect...} 
public class OrderPaidFor : OrderEvent {...amounts...} 
public class OrderComplete : OrderEvent {...more stuff...} 

今私はデータベースにこのデータをダンプすることができますそれを引き出すとすべてが良いですが、どのようにすべての注文クライアント側を引っ張ってそこにフィルタリングせずに完了した注文を取得するためのクエリを書くのですか?

私は以下のクエリを試しましたが、GetTypeをそのように変換できないと言われました。

Session.Query<Order>() 
     .Where(o => o.Events.Any(e => e.GetType() == typeof(OrderComplete))) 
     .ToList(); 

私はこの使用してJObjectsを行うには良い方法がありますかなり確信していると$ typeプロパティを問い合わせるが、Googleと私の努力は、まだ良いものが出ていません。

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

答えて

1

あなたができることは、代わりにIsComplete()関数を読み取り専用プロパティにすることです。そうすれば、格納されたドキュメントのIsComplete: true/falseにシリアル化されます。

次に、あなたはこのように照会できるようになります。

Session.Query<Order>() 
    .Where(o => o.IsComplete) 
    .ToList(); 

は、この情報がお役に立てば幸い!

+1

これは私が期待していた答えではありませんでしたが、コードを読んで作業するのが簡単です。時には単純な答えが最善の答えです。ありがとう! – Yojin