В последнее время у меня довольно странное сообщение об ошибке при попытке сделать db.SubmitChanges()
:переполнение SqlDateTime при установке значения с DateTime.Now
переполнение SqlDateTime. Должно быть между 1/1/1753 12:00:00 AM и 12/31/9999 11:59:59 PM.
Дело в том, я использую только DateTime.Now
установить свойство в моем объекте, и после вызова Response.Write(DateTime.Now.ToString());
он показывает 17-04-2013 18:03:13
, как это должно быть.
Этого не происходило раньше, и теперь функция всегда ломается. Я совершенно незнакомый - дата на моем SQL-сервере, похоже, в порядке.
Что может вызвать это?
Редактировать
Я не думаю, что это помогло бы (это слишком просто, чтобы иметь какие-либо ошибки, IMO), но есть моя функция:
public bool ReportLogIn(int UserID, string IP, int Succeed ...) {
A_UserLoginHistory Report = new A_UserLoginHistory();
Report.IP = IP;
Report.UserID = UserID;
Report.Status = Succeed;
Report.Date = DateTime.Now; //the only DateTime field
...
try {
db.A_UserLoginRegistry.InsertOnSubmit(Report);
db.SubmitChanges();
return true;
} catch (Exception e) {
ErrorLog.AddError(e.ToString());
return false;
}
}
возможный дубликат http://stackoverflow.com/questions/3399061/error -sqldatetime-overflow-must-be-between-1-1-1753-120000-am-and-12-31-999 –
Может ли это быть DMY/MDY? то есть будет 12-04-2013 18:03:13 в порядке? – paul
Помните, что 'db.SubmitChanges()' применяет каждое изменение с момента последнего вызова 'SubmitChanges()' или создало контекст. Вы можете определить, что все изменения связаны с просмотром 'db.GetChangeSet()'. Любой столбец даты/времени для любого затронутого объекта может быть причиной - например, если какое-либо время datetime приходит с по умолчанию 'DateTime.MinValue', оно выходит за пределы диапазона для SQL Server. – mellamokb