Ho definito Classe Persona proprietà Compleanno come nullable DateTime?, quindi perché l'operatore null coalescing non dovrebbe funzionare nell'esempio seguente?C# ?? Domanda operatore coalescente null
cmd.Parameters.Add(new SqlParameter("@Birthday",
SqlDbType.SmallDateTime)).Value =
person.Birthday ?? DBNull.Value;
Il compilatore err che ho ricevuto era "Operatore" ?? non può essere applicato agli operandi di tipo 'System.DateTime?' e 'System.DBNull'"
seguito anche ottenuto un errore di compilazione:
cmd.Parameters.Add(new SqlParameter("@Birthday",
SqlDbType.SmallDateTime)).Value =
(person.Birthday == null) ? person.Birthday:DBNull.Value;
ho aggiunto un cast (oggetto) come raccomandato dal refactoring, e compilato, ma non ha funzionato correttamente e il valore è stato memorizzato nel sqlserver db come null in entrambi i casi.
SqlDbType.SmallDateTime)).Value =
person.Birthday ?? (object)DBNull.Value;
Qualcuno può spiegare cosa sta succedendo qui?
avevo bisogno di usare il seguente codice goffo:
if (person.Birthday == null)
cmd.Parameters.Add("@Birthday", SqlDbType.SmallDateTime).Value
= DBNull.Value;
else cmd.Parameters.Add("@Birthday", SqlDbType.SmallDateTime).Value =
person.Birthday;
Duplicato di http://stackoverflow.com/questions/218808/c-ado-net-nulls-and-dbnull-is-there-more-efficient-syntax – sgriffinusa
Ottenuto da un altro post: SqlDbType.SmallDateTime)) .Value = person.Birthday ?? (Oggetto) DBNull.Value; Grazie! –