实体框架删除对象问题 [英] Entity Framework Delete Object Problem
本文介绍了实体框架删除对象问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在获得该对象无法被删除,因为它在ObjectStateManager中找不到。而删除对象。
i am getting "The object cannot be deleted because it was not found in the ObjectStateManager". while Deleting object.
这里是代码;
//first i am filling listview control.
private void Form1_Load(object sender, EventArgs e)
{
FirebirdEntity asa = new FirebirdEntity();
ObjectQuery<NEW_TABLE> sorgu = asa.NEW_TABLE;
foreach (var item in sorgu)
{
ListViewItem list = new ListViewItem();
list.Text = item.AD;
list.SubItems.Add(item.SOYAD);
list.Tag = item;
listView1.Items.Add(list);
}
//than getting New_table entity from listview's tag property.
private void button3_Click(object sender, EventArgs e)
{
using (FirebirdEntity arama = new FirebirdEntity())
{
NEW_TABLE del = (NEW_TABLE)listView1.SelectedItems[0].Tag;
arama.DeleteObject(del);
arama.SaveChanges();
}}
推荐答案
您需要附加对象为 ObjectContext
。尝试:
NEW_TABLE del = (NEW_TABLE)listView1.SelectedItems[0].Tag;
arama.Attach(del);
arama.DeleteObject(del);
arama.SaveChanges();
附加对象由 ObjectContext
跟踪。执行删除和更新是必需的。您可以在MSDN上阅读有关附加对象的更多信息。
Attached objects are tracked by the ObjectContext
. This is needed for performing deletes and updates. You can read more about attaching objects on MSDN.
编辑以澄清attach / detach:
Edit to clarify attach/detach:
private void Form1_Load(object sender, EventArgs e) {
FirebirdEntity asa = new FirebirdEntity();
ObjectQuery<NEW_TABLE> sorgu = asa.NEW_TABLE;
foreach (var item in sorgu) {
asa.Detach(item);
// add to listView1
}
}
另外,您应该使用块在中使用
ObjectContext
。
这篇关于实体框架删除对象问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文