確認!我是新來的實體框架,並試圖找到最簡單的方法來刪除一個項目。最簡單的方法來刪除對象與實體框架4
我有設置從數據庫TagCategory對象的數據源列表框。這工作正常。現在我想刪除選定的項目。所以我做這樣的事情:
TagCategory category = (TagCategory)lstCategories.SelectedItem;
using (MyEntities context = new MyEntities())
{
context.AttachTo("TagCategories", category);
context.DeleteObject(category);
context.SaveChanges();
}
這似乎挺直的,但它不起作用。沒有東西被刪除,沒有錯誤信息,什麼都沒有
因此,我認爲我可以,而不是做這樣的事情:
using (MyEntities context = new MyEntities())
{
string cmd = String.Format("DELETE FROM TagCategory WHERE [email protected]",
category.TagCatID));
context.ExecuteStoreCommand(qry);
}
,似乎工作。那麼,我只是繼續做什麼,或者實體框架4實際上能夠做到這一點?
編輯:沒關係。實際上,我遇到了另一個阻止代碼執行的問題。我發佈的這兩個片段似乎都可以正常工作。我很抱歉。
的方式,儘量不要使用`AttachTo`上下文。使用`ObjectSet .Attach`。例如`context.TagCategories.Attach(category)`。同樣,`context.Categories.Delete(category)`而不是`context.DeleteObject(category)`。 –
RPM1984
2011-01-24 23:23:49
@ RPM1984:我曾想過,如果兩種語法都做同樣的事情。你能說爲什麼Attach()實體更好嗎? – 2011-01-24 23:26:49
是不是很明顯?一個是強類型的,一個是魔術字符串。如果你重構你的模型,你會得到運行時錯誤。用`Attach`你會得到一個編譯錯誤。任何時候,如果你在應用程序中的任何地方放置了魔法字符串,請問自己爲什麼,看看是否可以避免。 – RPM1984 2011-01-25 00:19:51