我正在開發一個MVC應用程序,我不清楚保存這些實體的理想方式。我現在正在做的工作,但至少可以說是討厭的。實體框架Debacle
我的操作方法需要ViewModels並使用Automapper將它們映射到相關實體。我的實體是Requestor,Order和OrderDetail。
很明顯,SaveChanges方法的所有這些calles都是錯誤的,但我一直在遇到新增兒童問題,而不是在其他方面進行更新。
任何關於這段代碼應該如何看起來的幫助真的很感激。
傑森·麥肯齊
[HttpPost]
public ActionResult Edit(FormCollection formValues, RequestorViewModel requestor, OrderViewModel order, List<OrderDetailViewModel> OrderDetails)
{
var query = from r in db.Requestors
where r.RequestorID == requestor.RequestorID
select r;
var req = query.SingleOrDefault();
var orderQuery = from o in db.Orders
where o.RequestorID == requestor.RequestorID
select o;
var or = orderQuery.SingleOrDefault();
List<OrderDetail> orDet = db.OrderDetails.Where(od => od.OrderID == or.OrderID).ToList();
Mapper.CreateMap<RequestorViewModel, Requestor>();
req = Mapper.Map<RequestorViewModel, Requestor>(requestor);
Mapper.CreateMap<OrderViewModel, Order>();
or = Mapper.Map<OrderViewModel, Order>(order);
Mapper.CreateMap<OrderDetailViewModel, OrderDetail>();
orDet = Mapper.Map<List<OrderDetailViewModel>, List<OrderDetail>>(OrderDetails);
foreach (OrderDetail od in orDet)
{
db.OrderDetails.ApplyCurrentValues(od);
db.SaveChanges();
}
db.Requestors.ApplyCurrentValues(req);
db.SaveChanges();
db.Orders.ApplyCurrentValues(or);
db.SaveChanges();
return View("Index");
}
這可能會有所幫助:http://stackoverflow.com/questions/3594515/how-to-update-an-entity-in-entity-framework-4-net/3594608#3594608對於處理關係也檢查此:http://stackoverflow.com/questions/3635071/update-relationships-when-saving-changes-of-ef4-poco-objects/3635326#3635326 – 2011-03-16 15:38:55
'其中的一些事情' - 謹慎地闡述? – Yakimych 2011-03-16 17:14:28