我正在尝试实现删除数据库表元素的方法。
以下代码不会抛出任何异常,但该元素在执行后仍然存在于表中。
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 };
}
}
}
答案 0 :(得分:3)
你缺少DB.SaveChanges()。最好在StackExchange.Com上提出这类问题。
答案 1 :(得分:0)
删除分离呼叫。当您执行SaveChanges时,上下文会查看它正在跟踪的所有对象。由于您执行了Detach,因此不再跟踪该实例。