[英]Entity Framework Cannot Save - Conversion Of Datetime2 To DateTime Failing
[英]DateTime Conversion in Entity Framework
我正在尝试将datetime值插入数据库。 我将实体框架与ASP.NET MVC 4和SQL Server一起使用。
using (dc = new GateEntities())
{
tblSite site = new tblSite();
site.CalledInAt = DateTime.Parse("19/09/2013 00:29 AM", new CultureInfo("en- US", false));
dc.tblSites.Add(site);
dc.SaveChanges();
}
当我尝试保存数据时,出现错误:
“值'19 / 09/2013 00:29 AM'对于CalledInAt无效。”
我也尝试了Convert.ToDateTime()
但没有用。
这在我的本地计算机上工作正常。 它不仅在我的共享托管服务器上工作。
您列出的代码中有两个错误。
第一个(我的猜测是在打字的问题引入了一个错误)是你的CultureInfo被设置为'en- US'
这应该是'en-US'
另一个是美国日期的格式是“月”,然后是“日期”,并在您的字符串中将日期设置为一年中的第19个月。
下面的代码适用于您的日期值...
DateTime.Parse("09/19/2013 00:29 AM", new System.Globalization.CultureInfo("en-US", false));
例外是由EF的验证引起的,这种验证发生在具有与字符串19/09/2013 00:29 AM
不同的日期格式的区域性中。
从用户输入为实体属性分配值时,最好的方法是确保您独立于UI文化。 这意味着在UI(可能是视图模型)中,您必须捕获用户输入并将其转换为DateTime
值。 然后,您只需将DateTime
值分配给site.CalledInAt
。
另一个选择是将UI文化包括在视图模型中,并使用它在控制器中进行转换。
我在web.config中设置了区域性,它开始起作用。
<globalization uiCulture="en" culture="en-GB" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.