我正在使用MVC2和EF4編寫應用程序。我從我的數據庫創建實體,我有一個Timesheet表和一個TimesheetEntry表。我如何使用MVC2更新具有集合導航屬性的實體
我正在使用MVC2的模型綁定功能,並且成功地接收Timesheet對象,並且其TimesheetEntries填充了用戶創建的TimesheetEntries。
如果我使用我在其他方法使用(這裏的時間表是由MVC框架創建的對象)的技術:
Timesheet temp = context.Timesheets
.Include("TimesheetEntries")
.Where(t => t.Id == timesheet.Id).First();
context.ApplyCurrentValues<Timesheet>(temp.EntityKey.EntitySetName, timesheet);
context.SaveChanges();
然後我TimesheetEntries不會被保存。
我一直在嘗試沒有成功通過其他方式來做到這一點,如刪除所有條目:
Timesheet temp = context.Timesheets
.Include("TimesheetEntries")
.Where(t => t.Id == timesheet.Id).First();
context.ApplyCurrentValues<Timesheet>(temp.EntityKey.EntitySetName, timesheet);
context.ExecuteStoreCommand(@"DELETE FROM TimesheetEntry WHERE Timesheet=" + timesheet.Id.ToString());
foreach (TimesheetEntry entry in timesheet.TimesheetEntries)
{
entry.Timesheet = timesheet.Id;
context.TimesheetEntries.AddObject(entry);
}
context.SaveChanges();
return Redirect("ListTimesheets?PersonnelId="+timesheet.Person);
這是不正常的,我仍然沒有得到TimesheetEntries到DB :-(剛?想知道如果這裏IAM找錯了樹一起
PS如果任何人想在這些事情的詳細信息,讓我知道,我可以發佈更多的代碼
我測試它,它完美的作品。我必須將更新部分的'context.TimesheetEntries.ApplyCurrentValues(e)'改爲'((IObjectContextAdapter)context).ObjectContext.ApplyCurrentValues(「TimesheetEntries」,e));'用於EF6。 – beawolf 2016-10-08 17:21:53