如何使用 Entity Framework 在 ASP.NET MVC 中检查删除操作是否成功
How to check if a delete operation succeeds in ASP.NET MVC using Entity Framework
有没有办法判断实体记录是否删除成功?请参阅下面的代码和评论。
var myProductID = 123;
var productToDelete = await db.Products.Where(p => p.ID == myProductID).FirstOrDefaultAsync();
if (productToDelete != null)
{
db.Entry(productToDelete).State = EntityState.Deleted;
await db.SaveChangesAsync();
}
// At this point, is there a way to check whether the delete operation went thru successfully? In other words, I want to check if the record really got deleted from the database. I could run a re-query, but I don't want to do that.
我正在使用 .NET 4.7.2、ASP.NET MVC 5 和 Entity Framework 6。
如果操作失败,那么您将在调用 SaveChangesAsync 时得到某种 DbUpdateException。因为您正在那里等待,所以当操作完成时它已被删除。如果出于某种原因您不信任它,请再次尝试查询该实体。不过我不建议这样做。
您可以查看文档 here,如果数据库操作失败,您将得到一个异常
db.SaveChanges returns 一个整数,而它们是受影响的记录数,因此您可以通过 db.SaveChanges() >= 0
;
检查
if (productToDelete != null)
{
db.Entry(productToDelete).State = EntityState.Deleted;
int changes = await db.SaveChangesAsync();
if(changes>=0){
// ... success
}
// it will throw an exception if failed
}
有没有办法判断实体记录是否删除成功?请参阅下面的代码和评论。
var myProductID = 123;
var productToDelete = await db.Products.Where(p => p.ID == myProductID).FirstOrDefaultAsync();
if (productToDelete != null)
{
db.Entry(productToDelete).State = EntityState.Deleted;
await db.SaveChangesAsync();
}
// At this point, is there a way to check whether the delete operation went thru successfully? In other words, I want to check if the record really got deleted from the database. I could run a re-query, but I don't want to do that.
我正在使用 .NET 4.7.2、ASP.NET MVC 5 和 Entity Framework 6。
如果操作失败,那么您将在调用 SaveChangesAsync 时得到某种 DbUpdateException。因为您正在那里等待,所以当操作完成时它已被删除。如果出于某种原因您不信任它,请再次尝试查询该实体。不过我不建议这样做。
您可以查看文档 here,如果数据库操作失败,您将得到一个异常
db.SaveChanges returns 一个整数,而它们是受影响的记录数,因此您可以通过 db.SaveChanges() >= 0
;
if (productToDelete != null)
{
db.Entry(productToDelete).State = EntityState.Deleted;
int changes = await db.SaveChangesAsync();
if(changes>=0){
// ... success
}
// it will throw an exception if failed
}