2011-02-09 4 views
2

Je veux utiliser RavenDB pour un projet que je fais, mais avant que je puisse, j'ai besoin de savoir comment interroger des objets imbriqués ... Laissez-moi vous expliquer J'ai un cours comme celui-ci:Problèmes Demande de listes imbriquées dans RavenDB

public class Customer 
{ 
public string Id { get; set; } 
public string Name { get; set; } 
public IList<Orders> { get; set; } 
} 

Puis la classe de commande:

public class Order 
{ 
public int OrderNumber { get; set; } 
public decimal OrderAmount { get; set; } 
public bool CustomerBilled { get; set; } 
} 

créer un tas de fausses données et l'ajouter à Raven - certains clients ont reçu l'ordre avec seulement CustomerBilled la valeur true, certaines avec CustomerBilled à false, et certains un mélange de vrai et faux sur CustomerBilled. Ce dont j'ai besoin de l'aide, est de comprendre comment extraire une liste de clients que 1 ou plusieurs commandes avec CustomerBilled ont défini sur false.

Comment créer une requête pour le faire? Je n'arrive pas à en faire un, et je ne sais pas comment.

Répondre

4

Le dynamic queries en RavenDB peut gérer cela, je pense que ce qui suit devrait faire ce que vous voulez (désolé, je ne peux pas compiler le code en ce moment pour vérifier) ​​

// List of objects - linq 
from doc in Customers 
where doc.Orders.Any(order => order.CustomeBilled == false) 
select doc; 

Edit: sur le nouveau lien, faites défiler à mi-chemin de la section "plus d'options de filtrage"

+0

Très bien, cela a fonctionné - je devais juste le modifier légèrement à quelque chose comme ceci: var item = de doc en session. Query () où doc.Orders. Any (y => y.CustomerBilled == false) sélectionnez doc; – thorkia

+0

Oh oui, j'ai écrit l'index en texte brut, pas la requête LINQ réelle. Heureux que vous l'ayez fait fonctionner –

+0

Votre lien "requêtes dynamiques" mène maintenant à un message "page non trouvée" sur le site de RavenDB. – CoderDennis