Domanda

Ho creato un dataset fortemente tipizzato (MyDataSet) nel mio .NET app. Per semplicità, ci dicono che ha una DataTable (MyDataTable), con una colonna (MyCol). MyCol ha la proprietà DataType impostati su "System.Int32", e la sua proprietà AllowDBNull impostato su "true".

Mi piacerebbe creare manualmente una nuova riga, e aggiungi a questo set di dati. Creo la fila senza problemi, con qualcosa come:

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

Bene. Tuttavia, quando si tenta di impostare il valore DBNull:

myRow.MyCol = DBNull.Value;

Mi è stato detto che non posso farlo ... che non può lanciare quella di un int. Questo ha senso, in un certo senso, dal momento che ho definito per essere un int ... ma poi come posso ottenere DBNull in là? Non sono forse dovrei essere in grado di avere DBNull in là? Non è che ciò che la proprietà è per AllowDBNull?

Sono ovviamente manca qualcosa fundemental. Qualcuno può aiutare a spiegare di cosa si tratta?

EDIT: "int" Ho anche provato entrare come il tipo di dati, ma Visual Studio genera un errore quando entro, dicendo che "Colonna richiede un tipo di dati valido."

È stato utile?

Soluzione

che avete in classe MyDataTableRow un metodo generato denominato:. SetMyColNull ()

myRow.SetMyColNull();

si può anche fare:

myRow["MyCol"] = DBNull.Value;

perché myRow["MyCol"] è di tipo object

EDIT (aggiunto dalla Domanda OP):

C'è anche un metodo di contropartita per la lettura di questo valore di nuovo fuori, IsMyColNull ().

Altri suggerimenti

Ci sono due cose.

Consentire DBNull è un ambiente separato dal poter impostare il valore DBNull.

Ho usato solo l'interfaccia DataSet XSD per impostare questo ... ma ho dovuto non solo impostare "AllowDBNull = true", ma ho anche dovuto impostare "NullValue = (null)". Originariamente "NullValue" è stato impostato su "(Exception)". Ciò significava che l'insieme di dati avrebbe accettato bieng .Riempire () ED con nulla, ma non avrebbe permesso di impostare manualmente il valore null.

Non so se questo è il tuo problema, ma sembra simile.

basta andare alla modalità di progettista nel set di dati e fare clic destro sul campo che si desidera essere nullo abilitato, e selezionare Proprietà, nella finestra Proprietà impostare AllowDBNull True e NullValue a (NULL); funziona per me in questo! migliori saluti!

int non accetta nulla, ma int? (La versione INullable) fa. Penso che è necessario che tipo di dato, invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top