asp.net的MVC:SQLDateTimeOverflow问题与实体框架
问题描述:
我试图更新对象,并获得:asp.net的MVC:SQLDateTimeOverflow问题与实体框架
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,没有变化。
这些问题出现在我的本地设备上
答
好的,这是发生了什么事。 marc_s有正确的想法。
有是粘结剂处理的更新:
TryUpdateModel(editItem, new string[] { "LookupTable", "TextField1", "TextField2" });
我从调用TryUpdateModel去掉了“LookupTable中”,而是与处理在粘合剂中的值:
var fkid = Convert.ToInt32(controllerContext.HttpContext.Request.Form["LookupTable.ID"]);
EntityKey ek = new EntityKey("entities.LookupTable", "ID", fkid);
obj.LookupTableReference.EntityKey = ek;
显然,由于某种原因,EF试图更新LookupTable值。
你可以发布一些你正在做什么,当你访问和保存对象的代码吗? – bobwah 2010-01-19 16:45:16
只是猜测 - 有没有另一个DateTime属性的地方,可能不会被初始化(并因此被设置为0/0/0001?)。你展示的两个都没问题,那些肯定不会造成任何麻烦。 – 2010-01-19 16:50:49