La consulta con la cláusula JOIN siempre devuelve un conjunto de resultados vacío utilizando Dapper

c# dapper

Pregunta

Intento hacer la siguiente consulta usando dapper pero siempre devuelve un conjunto de resultados vacío. Primero traté de eliminar la cláusula WHERE para aislar el problema pero eso no funcionó. Después de eso, agregué un alias a la columna C.NAME en la cláusula SELECT pero tampoco funcionó.

private const string SelectClaims =
 @"SELECT C.NAME FROM CLAIMS C 
  INNER JOIN USERS_CLAIMS UC ON C.ID = UC.ID_CLAIM 
  WHERE UC.ID_USER = @Id";

using (var conn = new FbConnection(connectionString))
{
    var claims = conn.Query<string>(SelectClaims, new { user.Id });
    return claims;
}

Si reemplazo la consulta anterior para esto aquí, todo funciona bien:

SELECT NAME FROM CLAIMS

Respuesta aceptada

Entonces, dejé esto de lado e hice otra cosa y después de volver para tratar de resolver mi problema todo estaba funcionando bien. No cambié nada en mi código y, sorprendentemente, está funcionando ahora mismo.

No sé si es posible que una transacción pendiente en mi MiTeC Interbase Query me bloqueara para ver los registros actuales de la base de datos. Trato de simular esto de nuevo y ahora siempre está devolviendo los registros que necesito (mejor que nada, jeje).

Para aclarar, es perfecto utilizar una cadena como el tipo de datos de retorno, hacer una simple combinación en el parámetro sql a un método de consulta o no usar un alias para la columna de retorno (solo si todas las columnas coinciden con los nombres de las propiedades de C # o simplemente tienes una columna que dirige a una cadena como yo).


Respuesta popular

Para ser sincero, no estoy seguro de si está utilizando Dapper correctamente, ya que está seleccionando una columna con nombre y asignándola a una string simple: creo que Dapper no ve la propiedad 'Nombre' como falla silenciosamente. Supongo que debes probar Query<T> con un objeto fuertemente tipado o usar Query<dynamic> para evitar la creación innecesaria de clases.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué