asp.net mvc: проблема SQLDateTimeOverflow с Entity Framework - PullRequest
0 голосов
/ 19 января 2010

Я пытаюсь обновить объект и получаю:

SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. 

В объекте есть два поля, которые являются объектами DateTime, и для них установлено:

  obj.created_date = DateTime.Now;
  obj.modified_date = DateTime.Now;

За исключением того, что все выглядит разумно, когда я вижу объект:

>? obj.created_date
{1/13/2010 4:02:47 PM}
    Date: {1/13/2010 12:00:00 AM}
    Day: 13
    DayOfWeek: Wednesday
    DayOfYear: 13
    Hour: 16
    Kind: Unspecified
    Millisecond: 817
    Minute: 2
    Month: 1
    Second: 47
    Ticks: 633989953678170000
    TimeOfDay: {16:02:47.8170000}
    Year: 2010
>? obj.modified_date
{1/19/2010 12:20:50 PM}
    Date: {1/19/2010 12:00:00 AM}
    Day: 19
    DayOfWeek: Tuesday
    DayOfYear: 19
    Hour: 12
    Kind: Local
    Millisecond: 333
    Minute: 20
    Month: 1
    Second: 50
    Ticks: 633995004503331818
    TimeOfDay: {12:20:50.3331818}
    Year: 2010

Есть идеи, что происходит?Даже чтение полей из базы данных, а затем попытка сохранить их без изменений вызывает ошибку.Другие классы не имеют проблем, и я не вижу никаких различий, которые могли бы объяснить эту ошибку.

Я добавил

    <globalization culture="en-US" />

в свой web.config, без изменений.

Эти проблемы на моем локальном устройстве

1 Ответ

0 голосов
/ 19 января 2010

ОК, вот что происходит. у marc_s была правильная идея.

Там была связка, обрабатывающая обновления:

  TryUpdateModel(editItem, new string[] { "LookupTable", "TextField1", "TextField2" });

Я удалил «LookupTable» из вызова TryUpdateModel и вместо этого обработал значение в подшивке с помощью:

  var fkid = Convert.ToInt32(controllerContext.HttpContext.Request.Form["LookupTable.ID"]);
  EntityKey ek = new EntityKey("entities.LookupTable", "ID", fkid);
  obj.LookupTableReference.EntityKey = ek;

Видимо, EF по какой-то причине пытался обновить значение LookupTable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...