¿Cómo resolvemos todo esto "nastiness de conversión de tipo DBNull a tipo String no es válido"?

En nuestras aplicaciones, no puedo pensar en muchos casos en los que nos interesen los campos de cadena nula. Solo queremos que se muestren como cadenas vacías en la mayoría de las situaciones.

Entonces, cuando se usa el conjunto de datos / datos ADO.NET incorporado, el error:

La conversión de tipo DBNull a tipo String no es válida

es demasiado común más adelante en la aplicación cuando se hace referencia a cualquier dato de cadena antiguo.

Es un problema particular porque puede atraparnos muy fácilmente (y a menudo no se ve en las pruebas)

Sé que hay varias soluciones:

1. Compruebe .IsXXXNull en todos los casos

Pero:

Eso es un tedioso extra de líneas de código en toda la aplicación

Si olvidamos el cheque, incluso 1 vez en 100, tenemos un error potencial al acecho.

2. En el diseñador del conjunto de datos, cambie la propiedad NullValue del campo de la "Excepción de proyección" predeterminada a "Vacío"

Pero:

tenemos que identificar y cambiar cada tabla y cada campo de cadena que agregamos al diseñador del conjunto de datos (recuerde que el valor predeterminado es "Lanzar excepción")

Si olvidamos el cambio incluso 1 vez en 100, tenemos un error potencial al acecho.

3. Evita almacenar Nulos en los datos base.

Pero:

tenemos que identificar y cambiar cada tabla y cada campo de cadena que agregamos a la base de datos

No siempre tenemos ese tipo de control sobre los datos base.

4. No utilice el diseñador de conjuntos de datos, extraiga datos en nuestros propios objetos de clase, trate con todo el desorden de DBNull en nuestro propio código

Pero:

Sí, lo hacemos para nuestras tablas "principales". pero el diseñador de conjuntos de datos es una forma agradable y rápida de seleccionar una lista de selección o tabla de búsqueda, donde solo necesitamos el comportamiento de datos predeterminado

5. Use un generador de código o marco como CSLA en lugar de conjuntos de datos

Pero:

gran paso para resolver un pequeño problema ... la segunda respuesta para la pregunta mejor clasificada en SO tag CSLA menciona: "Los contras son que tiene una pequeña curva de aprendizaje".

Respuestas a la pregunta(2)

Su respuesta a la pregunta