2009-05-13 5 views
0

Je me bats pour obtenir une requête de sélection subsonique pour travailler, je suis en train d'écrire une méthode d'échange et essayé les suivantesSubSonic Paging Syntaxe Aide

Select ns = new Select(maincolumns.ToArray()); 
ns.PageSize = 10; ** Error Here ** 
ns.PageIndex = 1; ** And Error Here ** 
ns.Where("IsLive").IsEqualTo(true); 
ns.And("Title").Like("%" + SearchTerm + "%"); 
ns.OrderAsc("RentalExVat"); 
return ns.ExecuteDataSet().Tables[0]; 

Maintenant, il ne reconnaît pas ns.PageSize ou ns.PageIndex, le reste de la requête fonctionne bien? Je vois que j'ai besoin d'utiliser le nouvel outil 'Query' pour pouvoir utiliser ces deux, mais je n'arrive pas à comprendre la syntaxe de la requête?

toute aide de syntaxe apprécié

Répondre

4

syntaxe de requête de SubSonic est « couramment », donc dans votre exemple de code, la clause Where est pas appliquée à votre requête. Cet extrait peut fonctionner mieux:

Select ns = new Select(maincolumns.ToArray()); 
ns = ns.Where("IsLive").IsEqualTo(true) 
     .And("Title").Like("%" + SearchTerm + "%") 
     .OrderAsc("RentalExVat") 
     .Paged(1, 10); // paging is set here 
return ns.ExecuteDataSet().Tables[0]; 

Aussi, assurez-vous que votre « searchTerm » a été SQL échappé (ou utiliser un modèle d'appel alternatif) ou si vous êtes vulnérable à l'injection SQL.

+0

Merci de répondre, mais cela présente le même problème? ns.PageSize dit son readonly ?? Et son dire qu'il ne contient pas de définition pour ns.PageIndex ?? C'est la syntaxe pour ceux que je ne peux pas comprendre, la section où fonctionne bien :( – leen3o

+0

Désolé pour la confusion L'objet Query() utilise ces propriétés et a des setters.J'ai édité ma réponse pour réfléchir comment l'utiliser avec le Select() ctor (objets SqlQuery). – Jason