这是我的代码:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
{
foreach (ManufacturecodeEntity mcodeEntity in ManufacturecodeEntities)
{
ManufacturecodeEntity pcodeEntity = mcodeEntity.Parent;
pcodeEntity.IsCurrent = true;
UnitOfWork.ManufacturecodeRepository.Update(pcodeEntity);
}
UnitOfWork.DbContext.Database.ExecuteSqlCommand("Delete from manufacturecodes where detailstate_id=" + Id.ToString());
UnitOfWork.SaveChanges();
scope.Complete();
}
但是当我运行到方法 ExecuteSqlCommand
时,我的应用程序停止,然后抛出超时异常。
我使用ExecuteSqlCommand
删除记录,因为记录超过1500条,如果我使用Entity Framework Delete
和SaveChanges
方法,它将需要60年代,我无法接受这个结果。
所以我尝试使用ExecuteSqlCommand
方法来提高性能。现在看来有些不对劲。
请帮助我,谢谢。
最佳答案
您应该在 ExecuteSqlCommand
中使用 SqlParameters
,如下所示:
UnitOfWork.DbContext.Database.ExecuteSqlCommand("Delete from manufacturecodes where detailstate_id=@id", new SqlParameter("@id", id);
关于c# - 如何使用 ExecuteSqlCommand 删除 Entity Framework 中的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36807891/