Enterprise Library在foreach中插入对象列表。这会造成任何僵局吗?

时间:2013-12-07 17:41:27

标签: c# foreach enterprise-library bulkinsert

我正在使用Microsoft Enterprise Library有一个插入多行的情况,因为我使用的是foreach循环,但我觉得有很好的方法可以做到这一点

public int UddateSet
{    
    int rtn=0;

    foreach (Entities.Details list in day)    
    {    
         Database db = DatabaseFactory.CreateDatabase();

         string sp = "spUpdateSet";    
         DbCommand dbcommand = db.GetStoredProcCommand(sp);

         db.AddInParameter(dbcommand, "@date", DbType.DateTime,date);
         db.AddInParameter(dbcommand, "@Id", DbType.Int32, list.Id);
         db.AddInParameter(dbcommand, "@Role", DbType.Int32, list.Role);

         rtn+= db.ExecuteNonQuery(dbcommand);
     }

     return rtn;
}

1 个答案:

答案 0 :(得分:0)

死锁是一个棘手的主题。如果单独执行,您提供的代码不应导致任何死锁。通常死锁发生在其他进程在表上有锁并且您尝试从另一个进程插入数据时。

此外,您可能只想创建一个Connection和DbCommand并在循环中重用它。然后在完成后确保在DbCommand和Database对象上调用dispose(或使用using语句)。