![](/img/trans.png)
[英]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.