¿Cómo puedo incluir DBNull como un valor en mi conjunto de datos con establecimiento inflexible?

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

Pregunta

He creado un conjunto de datos fuertemente tipado (MyDataSet) en mi aplicación .NET. En aras de la simplicidad, vamos a decir que tiene un DataTable (MyDataTable), con una columna (MyCol). MyCol tiene la propiedad Tipo de datos ajustados a "System.Int32", y su propiedad AllowDBNull establece en "true".

Me gustaría crear manualmente una nueva fila, y añadir a este conjunto de datos. Creo la fila sin ningún problema, con algo como:

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

Bella. Sin embargo, cuando intento para establecer el valor de DBNull:

myRow.MyCol = DBNull.Value;

Me han dicho que no puedo hacerlo ... que no puede emitir ese a un int. Esto tiene sentido, en cierto modo, ya he definido que sea un int ... pero entonces, ¿cómo puedo obtener DBNull ahí? ¿No estoy supone que es capaz de tener DBNull ahí? No es eso lo que la propiedad es para AllowDBNull?

Obviamente estoy perdiendo algo fundemental. Alguien puede ayudar a explicar por qué es?

EDIT: "? Int" También probé entrar como el Tipo de datos, pero Visual Studio genera un error cuando entro en ella, diciendo que "la columna requiere un tipo de datos válido."

¿Fue útil?

Solución

que tiene en la clase MyDataTableRow un método llamado generada:. SetMyColNull ()

myRow.SetMyColNull();

También puede hacer:

myRow["MyCol"] = DBNull.Value;

porque myRow["MyCol"] es de tipo object

Edit (añadido por Cuestión OP):

También hay un método de contrapartida generados por leer este valor de vuelta, IsMyColNull ().

Otros consejos

Hay dos cosas.

Permitir DBNull es un ajuste separado de ser capaz de establecer el valor a DBNull.

Sólo he utilizado la interfaz conjunto de datos XSD para establecer este ... pero tenía que no sólo ponga "AllowDBNull = true", sino que también tenía que ajustar "NullValue = (null)". Originalmente "NullValue" se establece en "(Excepción)". Esto significaba que el conjunto de datos aceptaría ed bieng .Rellenar () con nula, pero no se permitirá configurar manualmente el valor null.

No estoy seguro si este es su problema, pero suena similar.

sólo tiene que ir al modo de diseño en conjunto de datos y haga clic derecho en el campo que desea ser nula permitido, y seleccione propiedades, en la ventana Propiedades, establezca AllowDBNull en True y NullValue a (NULL); a mí me funciona bien! un saludo!

int no acepta nula, pero int? (La versión INullable) hace. Creo que es necesario que el tipo de datos en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top