2009-11-03 9 views
0

j'ai obtenu la configuration suivante pour ma base de données:SubSonic 2.1 aide nécessaire C#

Category Table (Fields: CategoryID(PK), Title); 

Menu Table (Fields: MenuID(PK) CategoryID(FK), Title); 

Page Table (Fields PageID(PK), MenuID(FK), Title, Content, CreatedOn); 

maintenant pour une page Je veux savoir combien de pages d'une catégorie particulière détient. Je n'ai aucune idée de comment faire une telle requête avec SubSonic. La façon dont je le fais est maintenant comme ceci:

int count = 0; 
DAL.MenuCollection coll = new DAL.MenuCollection().WHERE(DAL.ObjectMenu.Columns.CategoryID, _catid); 

foreach(DAL.Menu item in coll) 
{ 

    DAL.PageCollection collTemp = new DAL.PageCollection().WHERE(DAL.Page.Columns.MenuID, _menuid); 
    count+= collTemp.Count; 

} 

Cela fonctionne mais n'est pas là une meilleure façon de l'écrire dans une seule déclaration? Cela semble un peu mauvais, je pense,

J'espère que quelqu'un peut me diriger dans la bonne direction. Merci de lire sujet Kind, s Mark

Répondre

1

Vous avez besoin de jointures et des travaux post-recherche. Si vous voulez faire cela tout d'un coup, chargez une requête avec ce que vous avez besoin de savoir en utilisant les jointures, puis lancez une boucle dessus, en l'organisant comme vous le souhaitez.

Voici plus sur les jointures et les requêtes en général: http://www.subsonicproject.com/docs/Simple_Query_Tool

+0

Depuis que je ne peux pas comparer voler je vais juste ajouter ma réponse comme un commentaire, vous pouvez toujours créer une vue, puis il suffit de compter le nombre de lignes revenu – RC1140