2016-04-23 28 views
1

これは私のコードです:ExecuteSqlCommandを使用してEntity Frameworkでレコードを削除するにはどうすればよいですか?

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に実行したときに、私のアプリケーションが停止し、その後、タイムアウト例外がスローされます。

レコードが1500を超えるため、DeleteSaveChangesメソッドを使用すると、レコードを削除するのに60秒かかるため、結果を受け入れることができません。

私はパフォーマンスを向上させるためにExecuteSqlCommandメソッドを試しています。今何か間違っているようです。

よろしくお願いいたします。

答えて

1

としてあなたはExecuteSqlCommandSqlParametersを使用する必要があります:私は正しい方法を知っていると思う

UnitOfWork.DbContext.Database.ExecuteSqlCommand("Delete from manufacturecodes where [email protected]", new SqlParameter("@id", id); 
+0

同じ結果、タイムアウト例外 – user2155362

0

。 TransactionScopeの代わりにDbContext.Database.BeginTransactionを使用する必要があります

関連する問題