簡體   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