Dapper Comment gérer DBNull par DynamicParameter.Get

c# dapper sql-server

Question

var param = new DynamicParameters();
param.Add("MsgId", DbType.Int32, direction: ParameterDirection.Output);

connection.Execute(MessageSelOutMessageId, param, commandType: CommandType.StoredProcedure);
count = param.Get<int>("MsgId");

En référençant Dapper, j'ai utilisé le code ci-dessus pour appeler une procédure stockée avec un paramètre de sortie - MsgId. Cela fonctionne correctement, mais dans certains cas, la procédure stockée ne renverrait aucune valeur et la valeur du paramètre de sortie renvoyée serait nulle. Dans ces cas, j'ai eu cette exception:

Tenter de convertir un DBNull en un type non nullable! Notez que les paramètres out / return n'auront pas de valeur mise à jour tant que le flux de données ne sera pas terminé (après le foreach pour Query (..., buffered: false) ou après la suppression de GridReader pour QueryMultiple)

J'avais compris que nous pouvions marquer le type de données de retour comme nullable pour éviter cette erreur en utilisant le code ci-dessous

count = param.Get<int?>("MsgId");

Mais, existe-t-il un autre moyen de vérifier param.Get ("MsgId") == null au lieu d'utiliser le type de données nullable - int?

Réponse populaire

Merci Paulius, essayé avec le type de données dynamique count = param.Get<dynamic>("MsgId"); et ça marche comme ce que je cherche.



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