2 votes

C# ExecuteQuery valeur nulle

J'ai un peu de code :

using (OAZISDBDataContext ctx = new OAZISDBDataContext())
            {                    
                IEnumerable<DBContactDetail> details = ctx.ExecuteQuery<DBContactDetail>("exec [dbo].[zna_contact] {0}, {1}",
                    "test", "19601023",
             }

Cependant, je souhaite également pouvoir transmettre des valeurs vides à la procédure stockée afin qu'elle ne les utilise pas.

Maintenant, avec les chaînes, c'est facile, je peux simplement passer String.Empty et cela fonctionnera. Cependant, si je veux passer des dates vides, cela pose un problème.

J'ai évidemment essayé :

using (OAZISDBDataContext ctx = new OAZISDBDataContext())
            {                    
                IEnumerable<DBContactDetail> details = ctx.ExecuteQuery<DBContactDetail>("exec [dbo].[zna_contact] {0}, {1}",
                    "test", null,
             }

Mais cela ne fonctionne pas, cela donne l'erreur :

System.Exception : Un paramètre de requête ne peut pas être de type System.Object.

Après quelques lectures, j'ai découvert que l'ExecuteCommand ne prend pas en charge les paramètres nuls, alors que la spécification affirme qu'elle le devrait.

Quelqu'un a-t-il rencontré ce problème et trouvé une solution de contournement ?

Merci beaucoup.

4voto

cjk Points 27463

Avez-vous essayé :

DBNull.Value

1voto

edosoft Points 7783

Avez-vous essayé d'envoyer DBNull.Value ou nouveau Nullable<DateTime>() ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X