Nullable Int-Spalte im DataSet
Arbeite ich mit .NETTO-stark-typisierte datasets und haben eine Tabelle mit einem int nullable-Spalte (und eine nullable DateTime-Spalte als gut).
Anscheinend gibt es einen bug mit dem dataset-designer, der verhindert, dass nullwertfähige Spalten, die auf diese Datentypen. Der designer erlaubt nur "throw exception" als Standard-Verhalten für null-Werte. Leider, wenn Sie eine nullable-Datentyp in der Datenbank ein null-Wert IST ein legitimer Wert, hat aber eine Ausnahme geworfen wenn versucht wird um diesen Wert abzurufen, die aus einer Daten-Zeile.
Habe ich gesehen, dass mehrere newsgroup-postings zu diesem problem, haben aber noch keine anständige Problemumgehungen für dieses Problem.
Ich würde gerne hören, wie andere haben sich mit diesem problem.
Dank.
- KLARSTELLUNG: Das dataset ist mit DBNull (der Standardwert), nicht null ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
DBNull war im Grunde brachte in spielen zu beschäftigen, die nicht nullable value types, vor .NET 2.0. Aufgrund der Bauweise des ADO.NET es gibt keine Weise können Sie vermeiden DBNull, es sei denn, man wählte einen direkteren Ansatz. DBNull ist integriert in den Kern ADO.NET, so müssen Sie lernen, damit zu Leben, dass, wenn Sie weiterhin verwenden möchten es.
Wenn Sie Ihre eigenen Daten-transport-Objekte, anstatt sich auf die generische System.Data-namespace können Sie überprüfen (während des Lesens in die Ergebnisse mit ein Daten-Leser), wenn der Wert null ist, aber Sie müssen irgendeine Art und Weise zu generieren, stark typisierte Objekte und Zuordnungen, denn das ist wirklich eine mühsame Arbeit.
Soweit mein wissen, DBNull ist gebaut, um das design von ADO.NET und der beste Weg, um bauen Sie Ihre apps-wenn Sie diese verwenden, ist coalesce (normalisieren) DBNull und null. Im Grunde genommen, stellen Sie Ihre eigenen DbConvert Klasse, das fängt DBNull und gibt eine tatsächliche null-Verweis, wenn der Wert DBNull. Das ist eine minimale Anforderung, aber sobald das erledigt ist müssen Sie weniger DBNull Werte im Umlauf zu befürchten.
Ich denke, dass dieser Beitrag auf ASP.NET forum wird etwas Hilfe für die Frage:
Stark Typisierte DataSet/Spalte null Problem
Es ist schon eine Weile her, seit ich verwendete typisierte DataSets, aber ich sehe in meinem alten code, verwenden
codegen:nullValue
Attribut. Ich glaube nicht, dass es unterstützt durch die designer, zumindest nicht in VS2005 (welche ich für das Projekt), so dass Sie würde haben, öffnen Sie Ihre xsd-Datei in der xml-editor, und führen Sie es von hand.Den resultierenden xml-Code würde wie folgt Aussehen: