a DateTime
en C# es un tipo de valor, no un tipo de referencia, y por lo tanto no puede ser nulo. Sin embargo, puede ser la constante DateTime.MinValue
que está fuera del rango de los servidores Sql DATETIME
tipo de datos.
Se garantiza que los tipos de valor siempre tengan un valor (predeterminado) (de cero) sin que sea necesario establecerlos explícitamente (en este caso, DateTime.MinValue).
Conclusión es probable que tenga un valor DateTime sin configurar que está tratando de pasar a la base de datos.
DateTime.MinValue = 1/1/0001 12:00:00 AM
DateTime.MaxValue = 23:59:59.9999999, December 31, 9999,
exactly one 100-nanosecond tick
before 00:00:00, January 1, 10000
MSDN: DateTime.MinValue
relacionadas con SQL Servidor
datetime
Date and time data from January 1, 1753 through December 31, 9999, to an accuracy of one three-hundredth of a second (equivalent to 3.33 milliseconds or 0.00333 seconds). Values are rounded to increments of .000, .003, or .007 seconds
smalldatetime
Date and time data from January 1, 1900, through June 6, 2079, with accuracy to the minute. smalldatetime values with 29.998 seconds or lower are rounded down to the nearest minute; values with 29.999 seconds or higher are rounded up to the nearest minute.
MSDN: Sql Server DateTime and SmallDateTime
Por último, si usted se encuentra pasando un C# DateTime
como una cadena a sql, debe formatearlo de la siguiente manera para conservar la máxima precisión y evitar que el servidor sql arroje un error similar.
string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
actualización (8 años más tarde)
considerar el uso del tipo de datos SQL DateTime2
que se alinea mejor con el .NET DateTime
con el periodo 0001-01-01 through 9999-12-31
y hora gama 00:00:00 through 23:59:59.9999999
string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");
MSDN datetime2 (Transact-SQL)
publicar su código. Además, podría considerar simplemente inspeccionar qué está construyendo linq debajo de las coberturas. – NotMe