Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 企业库在foreach中插入对象列表。这会造成死锁吗?_C#_Foreach_Enterprise Library_Bulkinsert - Fatal编程技术网

C# 企业库在foreach中插入对象列表。这会造成死锁吗?

C# 企业库在foreach中插入对象列表。这会造成死锁吗?,c#,foreach,enterprise-library,bulkinsert,C#,Foreach,Enterprise Library,Bulkinsert,我使用的是Microsoft企业库。有一种情况是多行插入,因此我使用的是foreach循环,但我觉得有一种很好的方法可以做到这一点 public int UddateSet { int rtn=0; foreach (Entities.Details list in day) { Database db = DatabaseFactory.CreateDatabase(); string sp = "spUp

我使用的是Microsoft企业库。有一种情况是多行插入,因此我使用的是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;
}

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

另外,您可能只需要创建一个连接和DbCommand,并在循环中重用它。完成后,请确保对DbCommand和数据库对象调用dispose(或使用using语句)