2011-05-19 85 views
1

我有Quiz.Component.Product.Type和一個提供組件的視圖。當創建回傳被調用時,由於該視圖包含一個Component_Id字段,模型聯編程序會爲我創建一個Quiz.Component,並將.Id設置爲正確的值;所有其他字段保留爲空,因此產品也是如此,這意味着當我和.SaveChanges()它抱怨組件參與關係(與產品)並且產品是預期的。保存EF中的更改

,這意味着我必須做的:

[HttpPost] ActionResult Create(Quiz q) 
{ 
    q.Product = db.Components.Where(x => x.Id == q.Component.Id).Product; 
    ... 
} 

,這可能被要求的太多了,但是,有沒有辦法,我可以有EF爲我做那些查找?

回答

2

這是要求太多。這是一個可以使用的策略。在POST動作中,使用id獲取相應的模型,然後使用TryUpdateModel來更新屬性並最終調用SaveChanges。

這是一種常用的範例:

[HttpPost] 
public ActionResult Edit(int id) 
{ 
    var model = db.SomeModel.Single(x => x.ID == id); 
    if (TryUpdateModel(model)) 
    { 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    return View(model); 
} 
+0

HEH。我只是懶惰 – ekkis 2011-05-19 17:57:10