Question

Récemment converti mon projet ASP.NET de 1.1 à 3.5. Hourra! Actuellement en train de développer un formulaire qui contient une poignée de champs optionnels. Normalement, je parcourais mon code en ajoutant des tonnes d'instructions if, en vérifiant la présence d'un champ vide et en définissant la valeur sur 0 si tel était le cas. Donc, je me demande s'il serait préférable de déclarer plutôt des variables privées nullables pour chacun de ces champs, puis de les ajouter en tant que paramètres pour la mise à jour de ma base de données? A l’aide de MSSQLS 2000, définissez déjà les champs correspondants pour autoriser les valeurs NULL.

À préciser: le formulaire Web contient des champs pour les montants en dollars. La valeur par défaut des entrées est 0, mais si l'utilisateur supprime l'un de ces 0, laissant le champ vide puis soumet le formulaire, une exception sera levée dans Convert.ToDecimal (MoneyField.Text) dans la liste d'arguments de la méthode soumet tout cela à la base de données. Y at-il un moyen plus propre de faire cela qui me manque?

Était-ce utile?

La solution

Il semble inhabituel que vous ayez que de nombreux champs qui sont réellement nullables, mais si vous devez décrire & "aucune valeur &"; séparément à toute valeur de domaine magique de (par exemple) un int, alors oui: Nullable<T> peut aider. Notez que vous devez traduire manuellement de null à DbNull.Value au niveau de la couche de données, car SqlParameter sur un <=> signifie & "Ne pas envoyer ce paramètre &"; . pas " envoyer la valeur <=> " (si vous voyez la distinction).

Autres conseils

Je pense qu'il y a confusion entre validation sur le terrain et Nullable Type ici ... sauf si bien sûr vous avez un certain type ... dites DateTime et voulez que cela soit nul ... ce qui ne serait pas possible sauf si l'utilisation du type Nullable.

Si tel est le cas, alors ... oui..Les types nullables sont la solution.

Oui, ça ressemble à un plan.

Vous devez cependant changer quelques appels

static class NConv
{
    static T? ToNullable<T>(string str) where T : struct
    {
        return (T?)(string.IsNullOrEmpty(str) ? default(T?) : Convert.ChangeType(str, typeof(T)));
    }

    static void HowTo()
    {
        double? myBonus = NConv.ToNullable<double>(null);
    }
}

Construisez dynamiquement votre SQL en fonction des champs fournis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top