스택 오버플로 및 Google을 검색 할 때 내 상황에 대한 명확한 답을 찾지 못해 누군가가 올바른 방향으로 나를 가리킬 수 있습니다.MVC 및 EF4 CTP 모델 바인딩 및 저장 계층 적 모델
내가 ASP.NET MVC 3 및 엔티티 프레임 워크 4 CTP를 사용하여 3 레벨 깊은 계층 개체를 업데이트 (단일 뷰에서) 하나의 편집 양식을 사용 할 수 있도록하려면 내 상황 (코드 - 첫 번째로) - 모델은 많은 서비스 옵션을 가질 수있는 서비스로 구성되며, 차례에는 많은 인벤토리 항목을 가질 수 있습니다.
- 업데이트 기존의 '서비스'기록
- 추가/업데이트/삭제 '를 서비스 옵션'기록 (첨부 : 나에 (TryUpdateModel를 통해) MVCs 기본 모델 바인더를 사용할 수 있도록 기대하고 있었다
가
게시 된 값에 따라) 각 서비스 옵션에 부착 (게시 값 - 추가/업데이트/삭제 '재고'기록에 따라) 서비스에 대한
M Y 모델
[Bind(Include="Name, ServiceOptions")]
public class Service {
[Key]
public int ServiceID { get; set; }
public string Name { get; set; }
public DateTime DateCreated { get; set; }
public virtual ICollection<ServiceOption> ServiceOptions { get; set; }
}
[Bind(Include="ServiceOptionID, Description, Tags")]
public class ServiceOption {
[Key]
public int ServiceOptionID { get; set; }
public int ServiceID { get; set; } /* parent id reference */
public string Description { get; set; }
public virtual ICollection<Inventory> InventoryItems { get; set; }
}
[Bind(Include = "InventoryID, Description")]
public class Inventory {
[Key]
public int InventoryID { get; set; }
public int ServiceOptionID { get; set; } /* parent id reference */
public string Description { get; set; }
}
이상적인 컨트롤러 방법 :
[HttpPost]
public ActionResult EditService(int id) {
Service service = db.Services.Single(s => s.ServiceID == id);
TryUpdateModel(service); // automatically updates child and grandchild records
if (ModelState.IsValid) {
db.SaveChanges();
return RedirectToAction("Index");
}
return View(service);
}
이 유토피아의 꿈을 달성 할 수있는 방법이 있나요, 아니면 내가 잘못 짚었 무엇입니까? 다른 기술 (예 : 일반 EF4, Automapper 등)을 사용할 수 있습니다.
미리 감사드립니다.
감사합니다. 그렇다면 엔터티, 그 자녀 및 손자에게 업데이트를 가져온 단일 양식을 게시해야한다면 어떻게 할 것입니까? DTO와? 저장하기 전에 DTO 내용을 반영하도록 엔티티 그래프를 수동으로 업데이트 하시겠습니까? – Brendan