Comment puis-je inclure DBNull comme valeur dans mon ensemble de données fortement typé?

StackOverflow https://stackoverflow.com/questions/1461622

Question

J'ai créé un ensemble de données fortement typé (MyDataSet) dans mon application .NET. Par souci de simplicité, on va dire qu'il a un DataTable (MyDataTable), avec une colonne (MyCol). MyCol a sa propriété DataType réglé sur "System.Int32", et sa propriété AllowDBNull définie à "true".

Je voudrais créer manuellement une nouvelle ligne, et l'ajouter à cet ensemble de données. Je crée la ligne sans problème, avec quelque chose comme:

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow();
Fin

. Cependant, lorsque je tente de définir la valeur à DBNull:

myRow.MyCol = DBNull.Value;

On me dit que je ne peux pas le faire ... qu'il ne peut pas lancer ce à un int. Cela est logique, en quelque sorte, depuis que je l'ai défini pour être un int ... mais alors comment puis-je obtenir DBNull là-dedans? Est-ce que je ne devais pas être en mesure d'avoir DBNull là-dedans? Est-ce pas ce que la propriété AllowDBNull est pour?

Je suis évidemment manque quelque chose fundemental. Quelqu'un peut-il expliquer ce qu'il est?

EDIT: "int" J'ai aussi essayé d'entrer comme le type de données, mais Visual Studio renvoie une erreur quand je rentre, en disant que « la colonne exige un type de données valide. »

Était-ce utile?

La solution

vous avez en classe MyDataTableRow une méthode générée nommé:. SetMyColNull ()

myRow.SetMyColNull();

vous pouvez également faire:

myRow["MyCol"] = DBNull.Value;

parce que myRow["MyCol"] est de type object

EDIT (ajouté par Question OP):

Il y a également un procédé de contrepartie généré pour la lecture de cette valeur avant, à IsMyColNull ().

Autres conseils

Il y a deux choses.

Permettre DBNull est un réglage séparé de la possibilité de définir la valeur de DBNull.

Je l'ai utilisé pour définir cette ... mais je devais non seulement régler « AllowDBNull = true », mais je devais aussi régler « NullValue = (null) » l'interface DataSet XSD. A l'origine "NullValue" a été réglé sur "(Exception)". Cela signifie que l'ensemble de données accepterait ed Bieng .Remplir () avec null, mais il ne vous permettra pas de régler manuellement la valeur null.

Je ne sais pas si cela est votre problème, mais il semble similaire.

juste passer en mode concepteur dans les données et clic droit sur le terrain que vous voulez être null activé et sélectionnez les propriétés, dans la fenêtre des propriétés, définissez AllowDBNull True et NullValue à (NULL); ça marche pour moi bien! meilleures salutations!

int n'accepte pas nulle, mais int? (La version INullable) fait. Je pense que vous avez besoin ce type de données à la place.

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