Nullable Int Colonne dans le DataSet
Je suis travailler avec .NET fortement typés et avoir une table avec un nullable int colonne (et nullable colonne DateTime).
Apparemment il y a un bug avec le jeu de données designer qui empêche d'avoir nullable colonnes sur ces types de données. Le concepteur n'autorise que les "jeter l'exception" que le comportement par défaut pour les valeurs null. Malheureusement, lors de l'utilisation d'un nullable type de données dans la base de données, une valeur null EST une valeur légitime, mais les résultats dans une exception levée lors d'une tentative de récupérer cette valeur à partir d'une ligne de données.
J'ai vu plusieurs forums à propos de ce problème, mais n'ont pas encore vu tout décent solutions de contournement pour ce problème.
J'aimerais entendre comment les autres ont abordé ce problème.
Grâce.
OriginalL'auteur goombaloon | 2009-05-18
Vous devez vous connecter pour publier un commentaire.
DBNull était essentiellement amené à jouer à traiter avec les non nullable types de valeur, pré .NET 2.0. En raison de la conception de ADO.NET, il n'y a aucune façon vous pouvez éviter DBNull, sauf si vous avez choisi une approche plus directe. DBNull est intégré dans le noyau de ADO.NET, de sorte que vous aurez à apprendre à vivre avec cela, si vous souhaitez continuer à l'utiliser.
Si vous fournissez votre propre transport de données des objets au lieu de compter sur le Système générique.Les données de l'espace de noms, vous pouvez vérifier (lors de la lecture dans les résultats avec un lecteur de données) si la valeur est null, mais vous aurez besoin d'une certaine manière à générer des objets fortement typés et des mappages parce que c'est vraiment un travail fastidieux.
À la mesure de mes connaissances, DBNull est intégré dans la conception de ADO.NET et la meilleure façon de construire vos applications si vous l'utiliser, est de s'unir (normaliser) DBNull et null. Fondamentalement, fournir votre propre DbConvert classe qui intercepte DBNull et renvoie une réelle référence null si la valeur est DBNull. C'est une exigence minimale, mais dès que cela est fait, vous aurez moins de DBNull valeurs flottant autour de vous en inquiéter.
OriginalL'auteur John Leidegren
Je pense que ce post sur ASP.NET le forum sera un peu d'aide pour la question:
Fortement Typées DataSet/colonne Nullable problème
OriginalL'auteur GabrielC
Il a été un moment depuis que j'ai utilisé typés, mais je vois dans mes vieux code qui utilisent
codegen:nullValue
attribut. Je ne pense pas que c'est pris en charge par le designer, du moins pas dans VS2005 (que j'ai utilisé pour ce projet), de sorte que vous ne devez ouvrir votre fichier xsd dans l'éditeur xml et de le faire à la main.Le xml résultant ressemblerait à quelque chose comme ceci:
OriginalL'auteur