使用Entity Framework 儲存到SQL Server 時出現驗證失敗異常
Entity Framework 是一個強大的ORM(物件關係對映)框架,它支援開發人員使用C# 等物件導向的程式語言來處理關聯式資料庫。但是,使用實體框架時可能出現的常見問題是將變更儲存到資料庫時出現「一個或多個實體驗證失敗」異常。
異常原因
錯誤訊息通常表示儲存到資料庫的資料違反了資料庫限制。在這種特定情況下,問題可能源自於資料庫和實體類別中用於日期和時間值的不同資料類型。
解決方案:轉換為適當的資料類型
要解決此問題,需要在儲存變更之前轉換實體類別中的資料類型以符合資料庫資料類型。在這種情況下,Event 類別中的 DateTime 和 TimeSpan 資料類型應在儲存到資料庫之前轉換為 Date 和 Time 資料類型。
以下是在程式碼中執行此操作的方法:
// Convert EventDate to Date datatype Event event = this.storeDB.Events.Find(id); event.EventDate = event.EventDate.Date; // Convert StartTime and EndTime to Time datatype event.StartTime = new TimeSpan(event.StartTime.Hours, event.StartTime.Minutes, 0); event.EndTime = new TimeSpan(event.EndTime.Hours, event.EndTime.Minutes, 0); // Save changes to the database this.storeDB.SaveChanges(); RedirectToAction("Index");
透過將資料類型轉換為正確的格式,儲存到資料庫的資料現在將符合資料庫約束,解決「驗證失敗」的問題異常。
附加說明:
如果繼續遇到資料保存問題,可以使用DbEntityValidationException 的EntityValidationErrors 屬性提取有關驗證錯誤的更多信息,如下所示在提供的答案中。
以上是為什麼使用實體框架將資料儲存到 SQL Server 時出現「驗證失敗」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!