2008-12-10 8 views

Répondre

1

Modifier: Certaines bases de données renverront longtemps les requêtes de nombre. Par exemple SQL Server.

ScalarQuery<long> query = new ScalarQuery<long>(typeof(Role), 
          "select count(r) from Role r"); 
return query.Execute(); 
+0

essayée, mais échoue encore. En tout cas merci. – suhair

+0

Avez-vous essayé avec longtemps? – gcores

0

Pas exactement la réponse à la question, mais une recommandation: si vous voulez éviter les tracas d'avoir à émettre une requête du tout vous-même, il suffit d'utiliser ActiveRecordMediator<T>.Count() (qui a les surcharges qui prennent des critères/chaînes de filtre si vous voulez un nombre conditionnel) et toutes renvoient int contre toutes les bases de données.

0

D'après les tests les réponses données à ce jour, ce qui suit a marché pour moi (y compris une clause where):

// Option 1 
int result = ActiveRecordMediator<Post>.Count("BlogId = ?", blogId); 

// Option 2 
CountQuery query = new CountQuery(typeof(Post), "BlogId = ?", blogId); 
int result = ActiveRecordMediator.ExecuteQuery(query); 

// Option 3 
ScalarQuery<long> query= new ScalarQuery<long>(typeof(Post), 
    "SELECT COUNT(*) FROM Post WHERE BlogId = ?", blogId); 
long result = query.Execute();