He definido la clase persona propiedad cumpleaños como nullable DateTime?, entonces ¿por qué no debería funcionar el operador nulo coalescente en el siguiente ejemplo?C# ?? nulo coalescente operador pregunta
cmd.Parameters.Add(new SqlParameter("@Birthday",
SqlDbType.SmallDateTime)).Value =
person.Birthday ?? DBNull.Value;
El error de compilación que obtuve fue "Operator" ?? no se puede aplicar a operandos del tipo 'System.DateTime?' y 'System.DBNull'"
Lo siguiente también tiene un error de compilación:
cmd.Parameters.Add(new SqlParameter("@Birthday",
SqlDbType.SmallDateTime)).Value =
(person.Birthday == null) ? person.Birthday:DBNull.Value;
añadí un yeso para (objeto) según lo recomendado por Refactor, y compilado, pero no funcionaba correctamente y el valor se almacenó en sqlserver db como nulo en ambos casos.
SqlDbType.SmallDateTime)).Value =
person.Birthday ?? (object)DBNull.Value;
¿Alguien puede explicar lo que está pasando aquí?
que necesitaba usar el siguiente código torpe:
if (person.Birthday == null)
cmd.Parameters.Add("@Birthday", SqlDbType.SmallDateTime).Value
= DBNull.Value;
else cmd.Parameters.Add("@Birthday", SqlDbType.SmallDateTime).Value =
person.Birthday;
Duplicado de http://stackoverflow.com/questions/218808/c-ado-net-nulls-and-dbnull-is-there-more-efficient-syntax – sgriffinusa
Obtengo esto de la otra publicación: SqlDbType.SmallDateTime)) .Value = persona.Cumpleaños ?? (objeto) DBNull.Value; ¡Gracias! –