我想將我的編輯保存到數據庫,並且我在ASP.NET MVC 3/C#中使用實體框架代碼優先,但我收到錯誤。在我的Event類中,我有DateTime和TimeSpan數據類型,但是在我的數據庫中,分別有Date和Time。這可能是原因嗎?在保存對數據庫的更改之前,如何在代碼中轉換爲適當的數據類型。使用實體框架保存對SQL Server數據庫的更改時,一個或多個實體的驗證失敗
public class Event
{
public int EventId { get; set; }
public int CategoryId { get; set; }
public int PlaceId { get; set; }
public string Title { get; set; }
public decimal Price { get; set; }
public DateTime EventDate { get; set; }
public TimeSpan StartTime { get; set; }
public TimeSpan EndTime { get; set; }
public string Description { get; set; }
public string EventPlaceUrl { get; set; }
public Category Category { get; set; }
public Place Place { get; set; }
}
控制器中的方法>>>>問題在storeDB.SaveChanges();在 '/' 應用
// POST: /EventManager/Edit/386
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
var theEvent = storeDB.Events.Find(id);
if (TryUpdateModel(theEvent))
{
storeDB.SaveChanges();
return RedirectToAction("Index");
}
else
{
ViewBag.Categories = storeDB.Categories.OrderBy(g => g.Name).ToList();
ViewBag.Places = storeDB.Places.OrderBy(a => a.Name).ToList();
return View(theEvent);
}
}
與
public class EventCalendarEntities : DbContext
{
public DbSet<Event> Events { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Place> Places { get; set; }
}
的SQL Server 2008 R2數據庫/ T-SQL
EventDate (Datatype = date)
StartTime (Datatype = time)
EndTime (Datatype = time)
HTTP表單
EventDate (Datatype = DateTime) e.g. 4/8/2011 12:00:00 AM
StartTime (Datatype = Timespan/time not sure) e.g. 08:30:00
EndTime (Datatype = Timespan/time not sure) e.g. 09:00:00
服務器錯誤。
一個或多個實體的驗證失敗。有關更多詳細信息,請參閱「EntityValidationErrors」屬性。
描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。
異常詳細信息:System.Data.Entity.Validation.DbEntityValidationException:一個或多個實體的驗證失敗。有關更多詳細信息,請參閱「EntityValidationErrors」屬性。
源錯誤:
Line 75: if (TryUpdateModel(theEvent))
Line 76: {
Line 77: storeDB.SaveChanges();
Line 78: return RedirectToAction("Index");
Line 79: }
源文件:C:\月\ MvcEventCalendar \ MvcEventCalendar \ \控制器線路EventManagerController.cs:77
堆棧跟蹤:
[DbEntityValidationException:驗證失敗對於一個或多個實體。有關更多詳細信息,請參閱「EntityValidationErrors」屬性。]
可能您的一個必填字段爲空值。像EventDate,StartTime,價格,類別等 – Daveo 2011-03-23 04:00:26
您是否檢查了發佈的表單變量以確保每個匹配數據庫定義的類型?或者像Daveo所說的那樣,缺少所需的表單值之一... – timothyclifford 2011-03-23 04:40:28
並非所有發佈的表單變量都與數據庫定義的類型相匹配。我在數據庫中使用了日期和時間,但在.NET中沒有直接的數據類型。因此,我使用了DateTime和TimeSpan。現在我需要將這兩者分別轉換爲日期和時間。 – user522767 2011-03-23 04:51:17