Wie kann ich DBNull als Wert in mein stark typisiertes Dataset aufnehmen?

8

Ich habe ein stark typisiertes Dataset (MyDataSet) in meiner .NET App erstellt. Der Einfachheit halber werden wir sagen, dass es eine DataTable (MyDataTable) mit einer Spalte (MyCol) hat. MyCol hat seine DataType-Eigenschaft auf "System.Int32" und seine AllowDBNull-Eigenschaft auf "True" festgelegt.

Ich möchte manuell eine neue Zeile erstellen und sie zu diesem Dataset hinzufügen. Ich erstelle die Zeile ohne Probleme, etwa mit:

%Vor%

Fein. Wenn ich versuche, den Wert auf DBNull festzulegen:

%Vor%

Mir wurde gesagt, dass ich es nicht tun kann ... dass es das nicht auf einen int werfen kann. Das ist in gewisser Weise sinnvoll, da ich es als int definiert habe ... aber wie kann ich DBNull da rein bekommen? Darf ich DBNull nicht dort drin haben? Ist das nicht die Eigenschaft AllowDBNull?

Ich vermisse offensichtlich etwas Fundierendes. Kann jemand erklären, was es ist?

BEARBEITEN: Ich habe auch versucht, "int?" einzugeben. als der DataType, aber Visual Studio löst einen Fehler aus, wenn ich es eintrage und sage, dass "Spalte einen gültigen DataType benötigt".

    
Beska 22.09.2009, 18:01
quelle

4 Antworten

13

Sie haben in der MyDataTableRow-Klasse eine generierte Methode namens: SetMyColNull ().

%Vor%

können Sie auch tun:

%Vor%

weil myRow["MyCol"] vom Typ object

ist

BEARBEITEN (von Frage OP hinzugefügt):

Es gibt auch eine Gegenstückmethode, die zum Zurücklesen dieses Wertes erzeugt wird, IsMyColNull ().

    
manji 22.09.2009, 18:08
quelle
1

Es gibt zwei Dinge.

Das Zulassen von DBNull ist eine separate Einstellung, um den Wert auf DBNull festlegen zu können.

Ich habe nur die DataSet-XSD-Schnittstelle verwendet, um dies festzulegen ... aber ich musste nicht nur "AllowDBNull = true" setzen, sondern auch "NullValue = (null)" setzen. Ursprünglich wurde "NullValue" auf "(Exception)" gesetzt. Dies bedeutet, dass das Dataset bieng .Fill () ed mit null akzeptiert, es aber nicht erlaubt, den Wert manuell auf null zu setzen.

Nicht sicher, ob das dein Problem ist, aber es klingt ähnlich.

    
Bill Crim 22.09.2009 18:13
quelle
1

gehen Sie einfach in den Designer-Modus im Dataset und klicken Sie mit der rechten Maustaste auf das Feld, für das Sie NULL aktivieren möchten, und wählen Sie im Eigenschaftenfenster AllowDBNull auf True und NullValue auf (NULL); es funktioniert für mich richtig! Mit freundlichen Grüßen!

    
amin10043 31.05.2010 11:29
quelle
0

int akzeptiert nicht null, aber int? (die INullable-Version) tut. Ich denke, dass Sie diesen Datentyp stattdessen brauchen.

    
Stuart Thompson 22.09.2009 18:04
quelle