c# - 如何使用 ExecuteSqlCommand 删除 Entity Framework 中的记录?

标签 c# 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 时,我的应用程序停止,然后抛出超时异常。

我使用ExecuteSqlCommand删除记录,因为记录超过1500条,如果我使用Entity Framework DeleteSaveChanges方法,它将需要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/

相关文章:

c# - WebSecurity.InitializeDatabaseConnection 不配合代码优先迁移

c# - 专门处理 0 值的 Get 方法

c# - 尝试使用 Entity Framework Code First 更新数据库

c# - 在 Entity Framework 中使用 DbSet<TEntity>.Local 属性

c# - c# 中的高速矩阵操作?

c# - 我想使用 foreach 语句迭代对象

c# - 如何区分耳机与PC中的集成音频

c# - UWP - 以编程方式在墨迹模式下调出屏幕键盘

c# - Entity Framework 可查询异步

c# - C# 6 字符串插值的默认区域性是什么?