Tengo dos casos en que iba a necesitar para configurar campo DateTime en SQL en nulo. Yo uso C# y LINQ para SQL Clases. Leí muchas preguntas sobre stackoverflow que son como mi pregunta, pero aún así le doy a la mía un poco diferente.Cómo configurar SQL DateTime en nulo de LINQ
Cuando insertamos un cliente nuevo.
código correspondiente:
Customer customer = new Customer();
customer.CustomerName = txt_name.Text;
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : //send null here;
customer.DOB es System.DateTime.
Lo que intenté es:
1)
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : SqlDateTime.Null;
Pero esto no va a tener éxito como SqlDateTime no se puede convertir a System.DateTime.
2)
DateTime? nullDateTime = new DateTime();
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : nullDateTime.Value
En este caso, construir tiene éxito pero será una excepción SqlDateTime desbordamiento.
Entonces cómo pasar valor nulo
Propiedad de DOB miembros en LINQ DATACLASS
Muchos de ellos sugieren para establecer Auto valor generado en true y no introduzca ningún valor. Es cierto, funciona en casos de inserción.
Pero ahora asumen, ya existe una entrada de cliente donde un valor de fecha y hora se establece en el campo Fecha de Nacimiento. Ahora el usuario quiere borrar este valor (eliminar la fecha de nacimiento), luego, en este caso, tengo que pasar un valor nulo usando UpdateOn para borrar la fecha y hora archivada en la fila correspondiente del cliente.
Muchas gracias de antemano :)
¿Se puede anular, no podría simplemente configurarlo en 'nulo'? –
'Customer.DOB' debe ser' DateTime? 'En lugar de' DateTime' si la columna es anulable. –