Se Row Contagem InvalidCast Exceção de ScalarQuery

votos
1
ScalarQuery<int> query = new ScalarQuery<int>(typeof(Role), 
                         select count(role.RoleId) from Role as role);
return query.Execute();

Ele falha com a exceção InvalidCast mas sucede quando a contagem é substituído com máx.

Publicado 10/12/2008 em 12:51
fonte usuário
Em outras línguas...                            


4 respostas

votos
1

Editar : Alguns bancos de dados irá retornar tempo para consultas de contagem. Por exemplo SQL Server.

ScalarQuery<long> query = new ScalarQuery<long>(typeof(Role), 
                          "select count(r) from Role r");
return query.Execute();
Respondeu 10/12/2008 em 13:03
fonte usuário

votos
0

Com base em testes as respostas dadas até à data, a seguinte trabalhou para mim (incluindo uma cláusula onde):

// 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();
Respondeu 27/06/2010 em 14:23
fonte usuário

votos
0

Não é exatamente a resposta para a pergunta, mas uma recomendação: se você quiser evitar o aborrecimento de ter de emitir uma consulta em tudo mesmo, então é só usar ActiveRecordMediator<T>.Count()(que tem sobrecargas que levam critérios / seqüências de filtro, se você quiser uma contagem condicional) e tudo voltar intcontra todos os bancos de dados.

Respondeu 10/12/2008 em 20:06
fonte usuário

votos
0

O banco de dados você está usando? Pode ser que a contagem não retorna um int.

Seu também pode tentar usar http://api.castleproject.org/html/T_Castle_ActiveRecord_Queries_CountQuery.htm

Respondeu 10/12/2008 em 13:06
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more