2010-01-22 7 views
2

J'ai un code:C# ExecuteQuery valeur null

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

Cependant, je veux aussi être en mesure de transmettre des valeurs vides à la procédure stockée de sorte qu'il ne fonctionne tout simplement pas les utiliser. Maintenant, avec des chaînes c'est facile, je peux juste passer String.Empty et ça va fonctionner. Cependant, si je veux passer des dates vides c'est 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 veut pas » travail, donne l'erreur:

System.Exception: A queryparameter can't be of type System.Object.

Après quelques lectures, j'ai découvert que le ExecuteCommand ne supporte pas les paramètres nuls tandis que le spec affirme qu'il devrait.

Est-ce que quelqu'un a rencontré ce problème et a trouvé une solution de contournement?

Merci un bouquet

Répondre

4

Avez-vous essayé:

DBNull.Value 
1

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