public void Map(MetaToParamSettings settings) { if (settings.Metadatas == null) { throw new ArgumentNullException(nameof(settings.Metadatas)); } if (settings.Columns == null) { throw new ArgumentNullException(nameof(settings.Columns)); } if (settings.ColumnToIndexMap == null) { throw new ArgumentNullException(nameof(settings.ColumnToIndexMap)); } if (settings.Target == null) { throw new ArgumentNullException(nameof(settings.Target)); } var index = 0; var ansiParameters = settings.AnsiStringParameters?.ToDictionary( ansiParam => ansiParam, ansiParam => 0) ?? new Dictionary <string, int>(); // ReSharper disable once LoopCanBeConvertedToQuery foreach (var columnName in settings.Columns) { if (!settings.ColumnToIndexMap.TryGetValue(columnName, out var columnIndex)) { columnIndex = -1; } var meta = columnIndex >= 0 ? settings.Metadatas[columnIndex] : ColumnMetadata.NullMeta; var param = AddParam(settings.Target, (settings.UseShortParam ? $"P{index++}" : columnName) + (settings.ParamSuffix ?? ""), SqlTypeFromType(meta.DataType)); if (!string.IsNullOrEmpty(meta.ColumnName) && (param.DbType == DbType.String || param.DbType == DbType.StringFixedLength) && ansiParameters.ContainsKey(meta.ColumnName)) { param.DbType = param.DbType == DbType.String ? DbType.AnsiString : DbType.AnsiStringFixedLength; } // ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault switch (param.DbType) { case DbType.AnsiString: case DbType.AnsiStringFixedLength: case DbType.Binary: case DbType.String: case DbType.StringFixedLength: case DbType.Xml: param.Size = meta.ColumnSize ?? 0; break; case DbType.Decimal: param.Precision = (byte)(meta.NumericPrecision ?? 0); param.Scale = (byte)(meta.NumericScale ?? 0); break; } } }
public void Map(MetaToParamSettings settings, int batchCount) { for (var i = 0; i < batchCount; i++) { if (settings.UseDefaultSuffix) { settings.ParamSuffix = $"_{i}"; } Map(settings); } }
protected override void MapParams(IDictionary <string, int> paramToMetaIndex, ref SQLiteCommand sqlCommand, int rowCount) { var metaToParamSettings = new MetaToParamSettings { Columns = ColumnNames, Metadatas = Source.ColumnMetadatas, AnsiStringParameters = AnsiStringParameters, ColumnToIndexMap = paramToMetaIndex, Target = sqlCommand.Parameters, UseShortParam = true }; SQLiteUtils.ParamMapper.Map(metaToParamSettings, rowCount); }
protected override void MapParams(IEnumerable <string> columnNames, Dictionary <string, int> paramToMetaIndex) { var metaToParamSettings = new MetaToParamSettings { Columns = columnNames, Metadatas = Source.ColumnMetadatas, AnsiStringParameters = AnsiStringParameters, ColumnToIndexMap = paramToMetaIndex, Target = Cmd.Parameters, UseShortParam = false }; ParamMapper.Map(metaToParamSettings); }
protected override void MapParams(IDictionary <string, int> paramToMetaIndex, ref OracleCommand sqlCommand, int rowCount) { var metaToParamSettings = new MetaToParamSettings { Columns = ColumnNames, Metadatas = Source.ColumnMetadatas, AnsiStringParameters = AnsiStringParameters, ColumnToIndexMap = paramToMetaIndex, Target = sqlCommand.Parameters, UseShortParam = !UseArrayBinding, UseDefaultSuffix = !UseArrayBinding }; OracleUtils.ParamMapper.Map(metaToParamSettings, !UseArrayBinding ? rowCount : 1); }