![](/img/trans.png)
[英]How can I efficiently delete all records in a table using Entity Framework without using SQL?
[英]How can I delete records in Entity Framework using ExecuteSqlCommand?
這是我的代碼:
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
方法,需要60s,我不能接受結果。
所以我嘗試了ExecuteSqlCommand
方法來提高性能。 現在好像有什么地方不對勁。
請幫幫我,謝謝。
您應該在ExecuteSqlCommand
使用SqlParameters
作為:
UnitOfWork.DbContext.Database.ExecuteSqlCommand("Delete from manufacturecodes where detailstate_id=@id", new SqlParameter("@id", id);
我想我知道正確的方法。 我應該使用 DbContext.Database.BeginTransaction 而不是 TransactionScope
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.