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; }Then use it like this:
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; }Then in _GetCommand()...
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; }I implemented this and it seems to work. Thoughts?