Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 22966|Отговор: 1

[Източник] spring.net nhibernate sqldatetime overflow решение

[Копирай линк]
Публикувано в 13.09.2017 г. 14:34:58 ч. | | | |
SqlDateTime overflow. Трябва да е между 1.01.1753 от 12:00:00 ч. и 31.12.9999 от 23:59:59 ч.




Когато извършвах операцията за обновяване от уебсайта, постоянно получавах грешка и мислех, че проблемът е в XML конфигурацията или нещо се е объркало, когато се изпълни SQL операторът

Опитах да използвам SQL анализатор на заявки, за да взема генерираните SQL оператори, и открих, че какъв е проблемът с правилното изпълнение? SQL твърдението е следното:

Изпълнителен sp_executesql N'INSERT В dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, nowLeanAlarmType, InsertTime, TreatedTime) СТОЙНОСТИ (@p0, @p1, @p2, @p3, @p4, @p5, @p6); изберете 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
SqlDateTime overflow. Резолюцията трябва да бъде --- между 1.01.1753 от 12:00:00 ч. и 31.12.9999 от 23:59:59 ч.

Причина за грешка

    Ако стойността на предоставения тип време към базата данни е NULL, или при вмъкване или обновяване на базата данни за DateTime.MinValue, стойността на полето datetime по подразбиране е null.
    NULL тук се отнася до null в програмния код, а повечето сценарии, в които това се случва, са: в програмата се дефинира променлива от времеви тип, която се предава към базата данни (или съхранената процедура) без да се присвоява стойност. В момента стойността на тази променлива по подразбиране се присвоява 01/01/01.
     Тъй като полето тип DateTime в базата данни, минималната стойност е 1/1/1753 12:00:00, докато . NET Framework, тип DateTime, минималната стойност е 1/1/0001 0:00:00, очевидно е извън минималния диапазон на стойностите на SQL стойността, което води до грешка при препълване на данни.
    Нека разгледаме как да видим .net и sql max min time през C#:


Изходен ефект:



В крайна сметка беше направен повече от десет минути,

Крайните причини за грешки са следните:

Един от типовете атрибути на обекта също е обект, тоест таблицата има външен ключ, а към таблицата с външни ключове се добавя нов атрибут datetime, който не получава стойност и не е зададен на нулев тип

При добавяне или актуализиране на обект, datetime на обекта с външен ключ автоматично се прикачва към стойността по подразбиране, тъй като времето на стандартната .net стойност е по-малко от минималното време по подразбиране в базата данни

Решение: Задайте свойството на типа datetime на обекта с външен ключ на nullable тип, помогнете на колегите да го решат перфектно!







Предишен:.NET/C# Операция Redis кеш добавяне, изтриване, модификация и заявка [изходен код]
Следващ:asp.net Анализ на грешки в аномалии на уебсайта
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com