Desbordamiento de SqlDateTime. Debe ser entre el 1/1/1753 a las 00:00:00 y el 31/12/9999 a las 23:59:59
Al realizar la operación de actualización desde la web, seguía dando un error y pensé que era la configuración XML o que algo había fallado al ejecutarse la instrucción SQL
Intenté usar un analizador de consultas SQL para obtener las sentencias SQL generadas, y descubrí que ¿cuál es el problema con la ejecución correcta? La sentencia SQL es la siguiente:
ejecutiva sp_executesql N'INSERT EN dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, TreatedTime) VALORES (@p0, @p1, @p2, @p3, @p4, @p5, @p6); select SCOPE_IDENTITY()',N'@p0 int,@p1 int,@p2 int,@p3 int,@p4 int,@p5 datetime,@p6 datetime',@p0=1,@p1=35,@p2=12,@p3=10,@p4=10,@p5='2017-09-13 13:09:41',@p6=NULL Desbordamiento de SqlDateTime. Debe --- una resolución entre el 1/1/1753 a las 00:00:00 y el 31/12/9999 a las 23:59:59
Causa del error
Si el valor del tipo de tiempo pasado a la base de datos es NULL, o al insertar o actualizar la base de datos para DateTime.MinValue, el valor del campo de datatime es nulo por defecto. NULL aquí se refiere a null en el código del programa, y la mayoría de los escenarios donde esto ocurre son: se define una variable de tipo tiempo en el programa y se pasa a la base de datos (o procedimiento almacenado) sin asignar un valor. En este momento, el valor de esta variable se asigna por defecto como 01/01/01. Dado que el campo de tipo FechaHora en la base de datos, el valor mínimo es 1/1/1753 12:00:00, mientras que el . NET Framework, el tipo DateTime, tiene el valor mínimo 1/1/0001 0:00:00, obviamente está fuera del rango mínimo de valores del valor SQL, lo que resulta en un error de desbordamiento de datos. Veamos cómo ver .net y el tiempo mínimo de SQL a través de C#:
Efecto de salida:
Al final, se retocó durante más de diez minutos,
Las causas finales del error son las siguientes:
Uno de los tipos de atributos del objeto también es un objeto, es decir, la tabla tiene una clave foránea y se añade un nuevo atributo de fecha y hora a la tabla de clave externa, que no tiene un valor asignado ni se establece como un tipo nulo
Al añadir o actualizar un objeto, la hora de fecha del objeto de clave foránea se asocia automáticamente al valor por defecto, porque la hora del valor por defecto .net es menor que el tiempo mínimo por defecto de la base de datos
Solución: Configura la propiedad de un tipo de fecha y hora del objeto clave exterior en tipo anulable, ¡ayuda a los compañeros a resolverlo perfectamente!
|