批量查询异常

nik*_*mus 1 c# sql sql-server

当我在C#中执行以下代码时,我可以插入一条没有问题的记录.当我的集合中有两个对象时,我收到以下错误:

变量名'@scoreboardId'已经声明.变量名在查询批处理或存储过程中必须是唯一的

有没有办法解决这个批处理异常?

public void insertActiveMonitorsForScoreboard(SqlConnection dbConn, SqlTransaction dbTrans, int scoreboardId,
                                              ObservableCollection<AvailableMonitorBo> availableMonitorsForAddOC) 
{         
    using (SqlCommand dbCommand = new SqlCommand(CreateAndDisplaySQLStrings.INSERT_SCOREBOARD_MONITORS, dbConn)) 
    {
        dbCommand.Transaction = dbTrans;

        foreach (AvailableMonitorBo bo in availableMonitorsForAddOC) 
        {
            if (bo.IsActive) 
            {
                dbCommand.Parameters.Add("scoreboardId", SqlDbType.Int).Value = scoreboardId;
                dbCommand.Parameters.Add("availableMonitorId", SqlDbType.Int).Value = bo.AvailableMonitorId;

                dbCommand.ExecuteNonQuery();
            }                   
        }               
    }
}
Run Code Online (Sandbox Code Playgroud)

sti*_*bit 5

尝试仅添加一次参数,然后仅更改其值.

public void insertActiveMonitorsForScoreboard(SqlConnection dbConn, SqlTransaction dbTrans, int scoreboardId,
 ObservableCollection<AvailableMonitorBo> availableMonitorsForAddOC) {         
     using (SqlCommand dbCommand = new SqlCommand(CreateAndDisplaySQLStrings.INSERT_SCOREBOARD_MONITORS, dbConn)) {
           dbCommand.Transaction = dbTrans;
           dbCommand.Parameters.Add("scoreboardId", SqlDbType.Int);
           dbCommand.Parameters.Add("availableMonitorId", SqlDbType.Int);
           foreach (AvailableMonitorBo bo in availableMonitorsForAddOC) {
               if (bo.IsActive) {
                   dbCommand.Parameters["scoreboardId"].Value = scoreboardId;
                   dbCommand.Parameters["availableMonitorId"].Value = bo.AvailableMonitorId;
                   dbCommand.ExecuteNonQuery();
              }                   
        }               
    }
}
Run Code Online (Sandbox Code Playgroud)