2012-06-07 31 views
0

將MVC3.0與剃鬚刀視圖引擎配合使用。我有一個名爲「供應商」的實體,其中包含對稱爲「聯繫人」的另一個實體的多次或多次引用。我想要做的就是從特定控制器中的供應商中刪除所有參考。這裏是我的代碼:如何清除mvc中的實體集合

public ActionResult _Edit(Vendor vendor) 
    { 
     if (ModelState.IsValid) 
     { 
      //Clear contact list 
      vendor.Contacts.Clear(); 

      db.Vendors.Attach(vendor); 
      db.ObjectStateManager.ChangeObjectState(vendor, EntityState.Modified); 
      db.SaveChanges(); 
     } 
    } 

由於某種原因,這是行不通的。我不知道爲什麼?由於

+0

您的意思是刪除所有供應商對聯繫人的引用 –

+0

刪除所有收集vendor.Contacts,爲一個特定的供應商 – Eric

回答

0

你應該負載和供應商,並從數據庫中的聯繫人,然後更新其屬性和調用SaveChanges:

var vendor = ...retrieve vendor from db...; 
vendor.Contacts.Load(); 
vendor.Contacts.Clear(); 
...update vendor properties... 
db.SaveChanges(); 

我知道這是不是因爲附加的實體和保存狀態爲有效的,但沒有人說EF是完美的。

順便說一下,直接綁定到實體框架對象可能是非常危險的。惡意用戶可以使用值爲您準備POST,這些值不會以您爲其提供的表單的形式出現,並且可以更改字段的值,您甚至不希望在此操作中對其進行修改。您應該創建特殊的視圖模型。