private void InitParameters(Parse headerCells) { Dictionary <String, DbParameterAccessor> allParams = dbEnvironment.GetAllProcedureParameters(procedureName); accessors = new DbParameterAccessor[headerCells.Size]; for (int i = 0; headerCells != null; i++, headerCells = headerCells.More) { String paramName = NameNormaliser.NormaliseName(headerCells.Text); try { accessors[i] = DbParameterAccessor.CloneWithSameParameter(allParams[paramName]); } catch (System.Collections.Generic.KeyNotFoundException) { Wrong(headerCells); throw new ApplicationException("Cannot find parameter " + paramName); } accessors[i].IsBoundToCheckOperation = checkIsImpliedByRegex.IsMatch(headerCells.Text); // sql server quirk. if output parameter is used in an input column, then // the param should be remapped to IN/OUT if ((!accessors[i].IsBoundToCheckOperation) && accessors[i].DbParameter.Direction == ParameterDirection.Output) { accessors[i].DbParameter.Direction = ParameterDirection.InputOutput; } } }
private void InitParameters(Parse headerCells) { Dictionary <String, DbParameterAccessor> allParams = dbEnvironment.GetAllProcedureParameters(procedureName); columnAccessors = new ColumnAccessors(); for (int i = 0; headerCells != null; i++, headerCells = headerCells.More) { String paramName = NameNormaliser.NormaliseName(headerCells.Text); try { DbParameterAccessor accessor = DbParameterAccessor.CloneWithSameParameter(allParams[paramName]); accessor.IsBoundToCheckOperation = BindingFactory.CheckIsImpliedBy(headerCells.Text); // sql server quirk. if output parameter is used in an input column, then // the param should be remapped to IN/OUT if ((!accessor.IsBoundToCheckOperation) && accessor.DbParameter.Direction == ParameterDirection.Output) { accessor.DbParameter.Direction = ParameterDirection.InputOutput; } columnAccessors.Assign(paramName, accessor); accessors.Add(accessor); } catch (KeyNotFoundException) { Wrong(headerCells); throw new ApplicationException("Cannot find parameter " + paramName); } } }
public void ShouldMapDisconnectedDataStructureToDbParameterAccessor() { DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(bigIntcolumnInfo, 0); Assert.That(accessor.ActualSqlType, Is.EqualTo(bigIntcolumnInfo.Datatype)); Assert.That(accessor.DbFieldName, Is.EqualTo(bigIntcolumnInfo.ColumnName)); Assert.That(accessor.Position, Is.EqualTo(0)); Assert.That(accessor.DbParameter.Direction, Is.EqualTo(ParameterDirection.Input)); Assert.That(accessor.DbParameter.Size, Is.EqualTo(bigIntcolumnInfo.Size)); }
internal static DbParameterAccessor[] SortAccessors(DbParameterAccessor[] accessors) { DbParameterAccessor[] sortedAccessors = (DbParameterAccessor[])accessors.Clone(); for (int i=0; i<sortedAccessors.Length-1; i++) for (int j=i+1; j<sortedAccessors.Length; j++) { if (sortedAccessors[i].Position > sortedAccessors[j].Position) { DbParameterAccessor x = sortedAccessors[i]; sortedAccessors[i] = sortedAccessors[j]; sortedAccessors[j] = x; } } return sortedAccessors; }
internal static DbParameterAccessor[] SortAccessors(DbParameterAccessor[] accessors) { DbParameterAccessor[] sortedAccessors = (DbParameterAccessor[])accessors.Clone(); for (int i = 0; i < sortedAccessors.Length - 1; i++) { for (int j = i + 1; j < sortedAccessors.Length; j++) { if (sortedAccessors[i].Position > sortedAccessors[j].Position) { DbParameterAccessor x = sortedAccessors[i]; sortedAccessors[i] = sortedAccessors[j]; sortedAccessors[j] = x; } } } return(sortedAccessors); }
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); }
public static DbParameterAccessor[] SortAccessors(IEnumerable <DbParameterAccessor> accessors) { var sortedAccessors = new List <DbParameterAccessor>(accessors); for (int i = 0; i < sortedAccessors.Count - 1; i++) { for (int j = i + 1; j < sortedAccessors.Count; j++) { if (sortedAccessors[i].Position <= sortedAccessors[j].Position) { continue; } DbParameterAccessor x = sortedAccessors[i]; sortedAccessors[i] = sortedAccessors[j]; sortedAccessors[j] = x; } } return(sortedAccessors.ToArray()); }
public void SortAccessorsInRightOrder() { //Prepare DbParameterAccessor[] accessorsToOrder = new DbParameterAccessor[4]; accessorsToOrder[0] = new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 1, "String"); accessorsToOrder[3] = new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 3, "String"); accessorsToOrder[2] = new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 5, "String"); accessorsToOrder[1] = new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 7, "String"); //Execute DbParameterAccessor[] resultingAccessors = ExecuteProcedure.SortAccessors(accessorsToOrder); //Verify Assert.AreEqual(1, resultingAccessors[0].Position); Assert.AreEqual(3, resultingAccessors[1].Position); Assert.AreEqual(5, resultingAccessors[2].Position); Assert.AreEqual(7, resultingAccessors[3].Position); }
public void SortAccessorsInRightOrder() { //Prepare DbParameterAccessor[] accessorsToOrder = new DbParameterAccessor[4]; accessorsToOrder[0]=new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 1, "String"); accessorsToOrder[3]=new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 3, "String"); accessorsToOrder[2]=new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 5, "String"); accessorsToOrder[1]=new DbParameterAccessor(new System.Data.SqlClient.SqlParameter(), typeof(string), 7, "String"); //Execute DbParameterAccessor[] resultingAccessors = ExecuteProcedure.SortAccessors(accessorsToOrder); //Verify Assert.AreEqual(1, resultingAccessors[0].Position); Assert.AreEqual(3, resultingAccessors[1].Position); Assert.AreEqual(5, resultingAccessors[2].Position); Assert.AreEqual(7, resultingAccessors[3].Position); }
public void ShouldMapSourceColumnToDbParameterAccessorForStringColumn() { DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(stringColumnInfo, 0); Assert.That(accessor.DbParameter.SourceColumn, Is.EqualTo(stringColumnInfo.ColumnName)); }
public void ShouldMapRunTimeTypeToDbParameterAccessorForStringColumn() { DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(stringColumnInfo, 0); Assert.That(accessor.DotNetType, Is.EqualTo(typeof(string))); }
public void ShouldMapMySqlTypeToDbParameterAccessorForStringColumn() { DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(stringColumnInfo, 0); Assert.That(accessor.DbParameter.DbType, Is.EqualTo(DbType.String)); }
public void ShouldMapMySqlTypeToDbParameterAccessorForBigIntColumn() { DbParameterAccessor accessor = MySqlTypeConverter.BuildDbParameterAccessorFrom(bigIntcolumnInfo, 0); Assert.That(accessor.DbParameter.DbType, Is.EqualTo(DbType.Int64)); }