>>private List<DbParameter> _CopyParameters(List<DbParameter> Parameters) >>{ >> List<DbParameter> RetVal = new List<DbParameter>(); >> >> foreach (DbParameter Param in Parameters) >> { >> DbParameter NewParam = _Factory.CreateParameter(); >> NewParam.ParameterName = Param.ParameterName; >> NewParam.Value = Param.Value; >> NewParam.Direction = Param.Direction; >> >> RetVal.Add(NewParam); >> >> Parameters.Remove(Param); >> >> } >> >> return RetVal; >>} >>>>
>>public int ExecuteNonQuery(string Command, List<DbParameter> Parameters, CommandType CommandType) >>{ >> int RetVal = 0; >> >> DbCommand cmd = _GetCommand(Command); >> >> try >> { >> RetVal = cmd.ExecuteNonQuery(); >> } >> catch (Exception e) >> { >> throw; >> } >> >> return RetVal; >>} >>>>
>>private DbCommand _GetCommand(string Command, List<DbParameter> Parameters, CommandType CmdType) >>{ >> _GetFactory(); >> _GetConnection(); >> >> DbCommand cmd = _Factory.CreateCommand(); >> cmd.CommandText = Command; >> cmd.Connection = _Connection; >> cmd.CommandType = CmdType; >> >> if (Parameters != null) >> { >> List<DbParameter> NewParams = _CopyParameters(Parameters); >> >> cmd.Parameters.Clear(); >> cmd.CommandType = CmdType; >> >> foreach (DbParameter p in NewParams) >> { >> cmd.Parameters.Add(p); >> } >> } >> >> return cmd; >>} >> >>>>
public int ExecuteNonQuery(List<SqlParameter> l) > { > SqlCommand sc = new SqlCommand(); > foreach (SqlParameter p in l){sc.Parameters.Add(p);} > int RetVal = sc.ExecuteNonQuery(); > foreach (SqlParameter p in l){sc.Parameters.Remove(p);} > return RetVal; > }I tried your suggestion. It throws a runtime error "Collection was modified...."