La requête avec clause JOIN renvoie toujours un jeu de résultats vide à l'aide de Dapper

c# dapper

Question

J'essaie de faire la requête suivante en utilisant dapper mais cela renvoie toujours un jeu de résultats vide. J'ai d'abord essayé de supprimer la clause WHERE afin d'isoler le problème, mais cela n'a pas fonctionné. Après cela, j'ai ajouté un alias à la colonne C.NAME dans la clause SELECT , mais cela n'a pas fonctionné non plus.

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 je remplace la requête ci-dessus pour cela, tout fonctionne bien:

SELECT NAME FROM CLAIMS

Réponse acceptée

Alors, j'ai mis cela de côté et je suis allé faire autre chose et après être revenu pour essayer de résoudre mon problème, tout fonctionnait bien. Je n'ai rien changé dans mon code et étonnamment, il fonctionne maintenant.

Je ne sais pas s'il est possible qu'une transaction en attente dans ma requête MiTeC Interbase me bloque pour voir les enregistrements actuels de la base de données. J'essaie de simuler cela à nouveau et maintenant il retourne toujours les enregistrements dont j'ai besoin (mieux que rien, hehe).

Pour plus de clarté, il est parfait d'utiliser une chaîne comme type de données renvoyé, effectuez une simple jointure avec un paramètre sql à une méthode Query ou n'utilisez pas du tout d'alias pour la colonne retournée (uniquement si toutes les colonnes correspondent à vos noms de propriété C #) ou vous avez juste une colonne dirigée vers une chaîne comme moi).


Réponse populaire

Pour être honnête, je ne suis pas sûr que vous utilisiez Dapper correctement puisque vous sélectionnez column nommée et que vous l'associez à une string simple. Je pense que Dapper ne voit pas la propriété 'Name' comme échouant silencieusement. Je suppose que vous devriez essayer Query<T> avec un objet fortement typé ou utiliser Query<dynamic> pour éviter la création de classe inutile.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi