private void InspectTable(Parse table) { Dictionary <String, DbParameterAccessor> allParams = environment.GetAllColumns(objectName); if (allParams.Count == 0) { throw new ApplicationException("Cannot retrieve list of columns for table or view " + objectName + " - check spelling and access rights"); } addRowWithParamNames(table, allParams); }
// this method will initialise accessors array from the parameters that // really go into the insert command and columnAccessors for all columns private void InitParameters(Parse headerCells) { Dictionary <String, DbParameterAccessor> allParams = dbEnvironment.GetAllColumns(parameterTableType); columnAccessors = new ColumnAccessors(); isOutputColumn = new bool[headerCells.Size]; var paramAccessors = new List <DbParameterAccessor>(); for (int i = 0; headerCells != null; i++, headerCells = headerCells.More) { String paramName = NameNormaliser.NormaliseName(headerCells.Text); DbParameterAccessor currentColumn; try { currentColumn = allParams[paramName]; } catch (KeyNotFoundException) { Wrong(headerCells); throw new ApplicationException("Cannot find column " + paramName); } isOutputColumn[i] = BindingFactory.CheckIsImpliedBy(headerCells.Text); currentColumn.IsBoundToCheckOperation = isOutputColumn[i]; columnAccessors.Assign(paramName, currentColumn); if (isOutputColumn[i]) { if (dbEnvironment.SupportsReturnOnInsert) { currentColumn.DbParameter.Direction = ParameterDirection.Output; paramAccessors.Add(currentColumn); } else // don't add to paramAccessors { //columnAccessors.Assign(paramName, new IdRetrievalAccessor(dbEnvironment, currentColumn.DotNetType)); columnAccessors.Assign(paramName, new IdRetrievalAccessor(dbEnvironment, currentColumn.DotNetType, parameterTableType)); } } else // not output { currentColumn.DbParameter.Direction = ParameterDirection.Input; paramAccessors.Add(currentColumn); } table.Columns.Add(currentColumn.DbFieldName, currentColumn.DotNetType); } accessors = paramAccessors.ToArray(); }
// this method will initialise accessors array from the parameters that // really go into the insert command and columnAccessors for all columns private void InitParameters(Parse headerCells) { Dictionary <String, DbParameterAccessor> allParams = dbEnvironment.GetAllColumns(tableName); columnAccessors = new Accessor[headerCells.Size]; isOutputColumn = new bool[headerCells.Size]; List <DbParameterAccessor> paramAccessors = new List <DbParameterAccessor>(); for (int i = 0; headerCells != null; i++, headerCells = headerCells.More) { String paramName = NameNormaliser.NormaliseName(headerCells.Text); DbParameterAccessor currentColumn; try { currentColumn = allParams[paramName]; } catch (System.Collections.Generic.KeyNotFoundException) { Wrong(headerCells); throw new ApplicationException("Cannot find column " + paramName); } isOutputColumn[i] = checkIsImpliedByRegex.IsMatch(headerCells.Text); currentColumn.IsBoundToCheckOperation = isOutputColumn[i]; columnAccessors[i] = currentColumn; if (isOutputColumn[i]) { if (dbEnvironment.SupportsReturnOnInsert) { currentColumn.DbParameter.Direction = ParameterDirection.Output; paramAccessors.Add(currentColumn); } else // don't add to paramAccessors { columnAccessors[i] = new dbfit.util.IdRetrievalAccessor(dbEnvironment, currentColumn.DotNetType); } } else // not output { currentColumn.DbParameter.Direction = ParameterDirection.Input; paramAccessors.Add(currentColumn); } } accessors = paramAccessors.ToArray(); }
private void InitParameters(Parse headerCells) { Dictionary <String, DbParameterAccessor> allParams = dbEnvironment.GetAllColumns(tableName); columnAccessors = new ColumnAccessors(); IList <DbParameterAccessor> selectAccList = new List <DbParameterAccessor>(); IList <DbParameterAccessor> updateAccList = new List <DbParameterAccessor>(); for (int i = 0; headerCells != null; i++, headerCells = headerCells.More) { String paramName = NameNormaliser.NormaliseName(headerCells.Text); try { DbParameterAccessor acc = allParams[paramName]; acc.DbParameter.Direction = ParameterDirection.Input; // allow same column to be used in both sides: // remap update parameters to u_paramname and select to s_paramname acc = DbParameterAccessor.Clone(acc, dbEnvironment); if (headerCells.Text.EndsWith("=")) { acc.DbParameter.ParameterName = acc.DbParameter.ParameterName + "_u"; updateAccList.Add(acc); columnAccessors.Assign(paramName + "=", acc); } else { acc.DbParameter.ParameterName = acc.DbParameter.ParameterName + "_s"; selectAccList.Add(acc); columnAccessors.Assign(paramName, acc); } } catch (KeyNotFoundException) { Wrong(headerCells); throw new ApplicationException("Cannot find column for " + paramName); } } selectAccessors = new DbParameterAccessor[selectAccList.Count]; selectAccList.CopyTo(selectAccessors, 0); updateAccessors = new DbParameterAccessor[updateAccList.Count]; updateAccList.CopyTo(updateAccessors, 0); }