2009-05-13 9 views
0

Ich kämpfe eine Unterschall Auswahlabfrage zu erhalten, zu arbeiten ich eine Paging-Methode schreibe und versucht, die folgendeSubSonic Paging Syntax Hilfe

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]; 

Jetzt erkennt sie nicht ns.PageSize Oder ns.PageIndex, Der Rest der Anfrage funktioniert gut ?? Ich sehe, dass ich das neue 'Abfrage' Werkzeug verwenden muss, um diese zwei verwenden zu können, aber ich kann die Abfragesyntax nicht herausfinden ??

jede Syntax Hilfe geschätzt

Antwort

4

SubSonic die Abfragesyntax ist ‚fließend‘, so in Ihrem Codebeispiel der Where-Klausel nicht auf Ihre Anfrage angewendet werden. Dieser Code-Schnipsel kann besser arbeiten:

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]; 

Also, stellen Sie sicher, dass Ihr ‚Suchbegriff‘ war SQL entkommen (oder eine alternative Aufruf-Muster verwenden) oder Sie sind anfällig für SQL-Injection.

+0

Vielen Dank für die Antwort, aber das ist das gleiche Problem? ns.PageSize sagt es readonly ?? Und es sagt, es enthält keine Definition für ns.PageIndex ?? Es ist die Syntax für diejenigen, die ich nicht herausfinden kann, die Where-Abschnitt funktioniert gut :( – leen3o

+0

Sorry für die Verwirrung. Das Objekt Query() verwendet diese Eigenschaften und hat Setter. Ich habe meine Antwort bearbeitet, um zu reflektieren, wie man es verwendet das Select() -Ctor (SqlQuery-Objekte). – Jason