0

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

下面的代码没有抛出任何异常,但元素在执行后仍然存在于表中。

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

2 回答 2

3

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

于 2012-04-30T16:14:24.313 回答
0

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

于 2012-05-12T12:00:31.143 回答