Софтуерно Инженерство
Loading...
Den1eD avatar Den1eD 5 Точки

[Exam Preperation] Проблем с вкарване на дата в базата

Здравейте,

Решавам поправителният изпит от Web services and cloud(BidSystem). Имам следният проблем:

Когато създавам нов offer като казвам на db.SaveChanges ми гърми с този ексепшън (The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.\r\nThe statement has been terminated.) Това ми се случи и на изпита по Database Apps. Тогава не можах да намеря решения на проблема. Сега намерих решение, като слагам анотация на всяко пропърти от тип DateTime [Column(TypeName = "datetime2")]. Въпросът ми е има ли някакво глобално решение на проблема, или трябва да използвам винаги само това?

Тагове:
0
C# Web Services & Cloud
a_rusenov avatar a_rusenov 1103 Точки

Сигурен ли си, че просто не си забравил да сетнеш дата? Защото този ексепшън се хвърля тогава.

0
10/09/2015 12:31:25
Den1eD avatar Den1eD 5 Точки

Ами да сигурен съм. Като е с анотацията отгоре си минава успешно, като я няма гърми. Сега тествах пак и се получи нещо много странно. Като махна анотацията нито една заявка не минава дори логване и регистрация. Статус кода е 500

0
enevlogiev avatar enevlogiev 1168 Точки

Това ми се получава ако пробвам да сложа дата преди 1753 г. (примерно new DateTime(0, 0, 0). Другият вариант е да не си го направил nullable.

0
a_rusenov avatar a_rusenov 1103 Точки

Добре, а какво сетваш като дата? Почти сигурен съм, че не се подава нищо (т.е. дата 0.0.0 както Едо казва), защото datatime си е стандартният формат в базата.

0
10/09/2015 15:05:53
Filkolev avatar Filkolev 4501 Точки

На изпита по DB Apps действително имаше двама души, на които им гърмеше с тази грешка без видима причина. Датата се парсваше правилно и се сетваше както трябва, но при стартиране хвърляше ексепшън. 

Най-добре колегата да си сподели кода, за да проверим дали на друга машина ще се получи същото.

0
enevlogiev avatar enevlogiev 1168 Точки

Това ми се получава ако пробвам да сложа дата преди 1753 г. (примерно new DateTime(0, 0, 0). Другият вариант е да не си го направил nullable.

0