繁体   English   中英

实体框架中的DateTime转换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM