使用EntityFrameWork删除Db元素

时间:2012-04-30 15:56:47

标签: c# .net database entity-framework

我正在尝试实现删除数据库表元素的方法。

以下代码不会抛出任何异常,但该元素在执行后仍然存在于表中。

namespace SuitTest_tt_content_2
{
    class DBUtils
    {
        public static StandardResponse checkContent(long id)
        {
            using (OnlineRedesignIndexEntities DB = new OnlineRedesignIndexEntities())
            {
                try
                {
                    Console.WriteLine("          ************** TEST ADD_CONTENT **************          ");
                    var ContentId = (from elemento in DB.Contenuto where elemento.PK_Content_ID == id select elemento).First();

                    if (ContentId.PK_Content_ID==id)
                    {
                        DB.Attach(ContentId);
                        DB.DeleteObject(ContentId);
                        DB.Detach(ContentId);
                    }
                    else
                    {
                        throw new Exception("Errore nel reperimento dell'elemento");
                    }
                }
                catch (Exception e)
                {
                    return new StandardResponse() { Success = false, Message = e.Message };
                }

                try
                {
                    DB.SaveChanges();
                }
                catch (Exception e)
                {
                    throw new Exception("Errore nel salvataggio modifiche sul DB." + e.Message);
                }
            }

            return new StandardResponse() { Success = true };
        }
    }
}

2 个答案:

答案 0 :(得分:3)

你缺少DB.SaveChanges()。最好在StackExchange.Com上提出这类问题。

答案 1 :(得分:0)

删除分离呼叫。当您执行SaveChanges时,上下文会查看它正在跟踪的所有对象。由于您执行了Detach,因此不再跟踪该实例。