Error con datos Null en la base de datos
Cuando defines una tabla y especificas que el campo no soporte nulos, y tratas de meterle nulos, es lógico que te lance una excepción que no permite nulos, o si hay una tabla con una relación y tampoco estás especificando un valor para ese campo que es clave foránea, igualmente es lógico que te lance excepción de valor nulo.
Ahora respecto a esa excepción al leer, igualmente no pretendas traerte un dbnull y asignarle a alguna propiedad que sea de otro tipo, lo que hay que hacer en esos casos, es verificar si viene un nulo de base de datos (DBNull), asignar un null a la propiedad, que no es lo mismo un null que un DBNull, es tan simple como comprobar si viene un DBNull, desde la base de datos, le pongo null a la propiedad que estoy asignando el valor o simplemente una cadena vacía o un cero en el caso de propiedades o campos numéricos.