C# 企业库在foreach中插入对象列表。这会造成死锁吗?
我使用的是Microsoft企业库。有一种情况是多行插入,因此我使用的是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
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语句)