Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 22966|Respuesta: 1

[Fuente] spring.net solución de desbordamiento sqldatetime de nhibernate

[Copiar enlace]
Publicado en 13/9/2017 14:34:58 | | | |
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!







Anterior:.net/c# Operación redis adición, eliminación, modificación y consulta de caché [código fuente]
Próximo:asp.net Sitio web Análisis de errores de anomalías
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com