实体框架删除对象问题 [英] Entity Framework Delete Object Problem

查看:82
本文介绍了实体框架删除对象问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到的对象不能被删除,因为它在ObjectStateManager未找到。而删除对象。

下面是codeS;

  //首先我填ListView控件。
 私人无效Form1_Load的(对象发件人,EventArgs的)
    {
        FirebirdEntity ASA =新FirebirdEntity();

        的ObjectQuery< NEW_TABLE> sorgu = asa.NEW_TABLE;

        的foreach(在sorgu VAR项)
        {
            ListViewItem的名单=新的ListViewItem();
            list.Text = item.AD;
            list.SubItems.Add(item.SOYAD);
            list.Tag =项目;
            listView1.Items.Add(名单);

        }
//不是让NEW_TABLE实体从列表视图的标签属性。
 私人无效button3_Click(对象发件人,EventArgs的)
    {

            使用(FirebirdEntity arama =新FirebirdEntity())
            {

               NEW_TABLE德尔=(NEW_TABLE)listView1.SelectedItems [0] .TAG;
               arama.DeleteObject(DEL);
               arama.SaveChanges();


            }}
 

解决方案

您需要<一个href="http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.attach.aspx">attach对象到的ObjectContext 。尝试:

  NEW_TABLE德尔=(NEW_TABLE)listView1.SelectedItems [0] .TAG;
arama.Attach(DEL);
arama.DeleteObject(DEL);
arama.SaveChanges();
 

附着物由的ObjectContext 跟踪。这是必要的,用于执行删除和更新。你可以阅读更多有关附加对象 MSDN上。

修改,以澄清安装/拆卸:

 私人无效Form1_Load的(对象发件人,EventArgs的){
    FirebirdEntity ASA =新FirebirdEntity();

    的ObjectQuery&LT; NEW_TABLE&GT; sorgu = asa.NEW_TABLE;
    的foreach(在sorgu VAR项){
        asa.Detach(项目);
        //添加到ListView1的
    }
}
 

此外,你应该使用块包住使用的ObjectContext S的

i am getting "The object cannot be deleted because it was not found in the ObjectStateManager". while Deleting object.

here is codes ;

//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();


            }}

解决方案

You need to attach the object to the ObjectContext. Try:

NEW_TABLE del = (NEW_TABLE)listView1.SelectedItems[0].Tag;
arama.Attach(del);
arama.DeleteObject(del);
arama.SaveChanges();

Attached objects are tracked by the ObjectContext. This is needed for performing deletes and updates. You can read more about attaching objects on MSDN.

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
    }
}

Also, you should wrap your use of ObjectContexts in using blocks.

这篇关于实体框架删除对象问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆