こんばんは!
PageとPageHistoryという 2 つのモデル クラスがあります。両方に同じ属性が含まれています。ここでは、 Pageオブジェクトを編集するたびに、 PageHistoryオブジェクトを同じプロパティ値で更新する必要があります。
私はこのようなことを試しました:
[HttpPost]
[ValidateInput(false)]
public ActionResult Edit(Page page, FormCollection frm)
{
try
{
if (ModelState.IsValid)
{
page.IsPublished = !string.IsNullOrEmpty(frm["BtnPublish"]);
_db.Entry(page).State = EntityState.Modified;
_db.SaveChanges();
//Add updated page in hitory, if something is modified
PageHistory ph=new PageHistory();
ph.ID=page.ID
// likewise all attributes.....
// after all values are assigned, save a History object
ph.SaveChanges();
return RedirectToAction("Subpages", new { id = page.ParentId });
}
}
catch (DataException)
{
//Log the error (add a variable name after DataException)
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator (http://support.mysite.com).");
}
return View(page);
}
動作していますが、これはあまり最適化されていません。オブジェクトをコピーするための代替手段はありますか? もう 1 つの質問は、両方に同じ属性が含まれているため、PageクラスからPageHistoryクラスを継承することは可能ですか? どれが最良のアプローチですか?