簡體   English   中英

如何使用 ExecuteSqlCommand 刪除實體框架中的記錄?

[英]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 DeleteSaveChanges方法,需要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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM