2009-08-19 4 views
1

Je suis en train de genericize (même si c'est un mot), la ligne de code suivante:création de paramètres de commande Genericize lorsque vous utilisez les dates null

oCmd.CreateParameter("@Date", SqlDbType.DateTime, updateDate > DateTime.MinValue ? updateDate : SqlDateTime.Null); 

Le premier changement est évidemment SqlDbType.DateTime juste DbType.DateTime , qu'est-ce que je fais avec le SqlDateTime.Null?

Si je change à:

oCmd.CreateParameter("@Date", DbType.DateTime, updateDate > DateTime.MinValue ? updateDate : null); 

je reçois le joli petit rouge me disant squiggly il n'y a pas de conversion implicite entre DateTime et nulle. Je ne semble pas être en mesure de trouver une façon générique de le faire - est-ce possible?

En raison de l'incompatibilité entre la source du paramètre UpdateDate et cette ligne de code, je ne peux pas utiliser UpdateDate:

oCmd.CreateParameter("@Date", DbType.DateTime, updateDate); 

Très souvent la date de réception du code d'appel est en dehors de la date valide plage de SQL Server et il provoque l'échec de la commande. Par conséquent, il doit y avoir une vérification - d'où la raison de l'inclusion du contrôle ternaire. La seule façon que je peux voir pour le faire est d'éclater à plusieurs lignes, mais j'espère que quelqu'un a un tour dans sa manche afin que je puisse le garder comme une seule ligne.

Vive à l'avance

Répondre

3

Essayez ceci:

oCmd.CreateParameter("@Date", DbType.DateTime, 
    updateDate > DateTime.MinValue ? (object)updateDate : DBNull.Value); 
+0

fonctionne comme un charme, merci – BenAlabaster

Questions connexes