public static bool GetValueAsXml(object value, ref string xtype, ref string xdata) { var holder = new CdlValueHolder(); holder.ReadFrom(value); return(GetValueAsXml(holder, ref xtype, ref xdata)); }
void IColumnMapping.ProcessMapping(int column, int rowNumber, ICdlRecord record, ICdlValueWriter writer, IShellContext context) { if (_value == null) { _value = new CdlValueHolder(); } if (Expression != null && Value != null) { throw new Exception("DBSH-00004 MapValue: Both Expression and Value is set"); } var childContext = context.CreateChildContext(); if (Value != null) { CreateColumnValues(record, childContext); string value = childContext.Replace(Value); _value.ReadFrom(value); _value.WriteTo(writer); } if (Expression != null) { CreateColumnValues(record, childContext); object value = childContext.Evaluate(Expression); _value.ReadFrom(value); _value.WriteTo(writer); } if (Expression == null && Value == null) { _value.SetNull(); _value.WriteTo(writer); } }
protected virtual void ApplyTypeRestrictions(CdlValueHolder holder, DbTypeBase type) { var stype = type as DbTypeString; var htype = holder.GetFieldType(); if (stype != null && htype == TypeStorage.String) { string sval = holder.GetString(); if (stype.Length > 0 && sval.Length > stype.Length) { sval = sval.Substring(0, stype.Length); holder.SetString(sval); } } if (htype.IsDateRelated() && !m_allowZeroInDate) { var dt = holder.GetDateTimeValue(); if (dt.MakeValidDate()) { m_holder.SetDateTimeEx(dt); } } }
protected override void ApplyTypeRestrictions(CdlValueHolder holder, DbTypeBase type) { base.ApplyTypeRestrictions(holder, type); var dtt = type as DbTypeDatetime; if (dtt != null) { if (!dtt.ExtendedPrecision) { var htype = holder.GetFieldType(); if (htype.IsDateRelated()) { var dt = holder.GetDateTimeValue(); dt.Nanosecond = dt.Nanosecond / 1000000 * 1000000; switch (htype) { case TypeStorage.DateEx: holder.SetDateEx(dt.DatePart); break; case TypeStorage.TimeEx: holder.SetTimeEx(dt.TimePart); break; case TypeStorage.DateTimeEx: holder.SetDateTimeEx(dt); break; case TypeStorage.DateTime: holder.SetDateTime(dt.AsDateTime); break; } } } } }
protected static void GetValues(DmlfUpdateFieldCollection fields, List <ChangeSetValue> values, TableInfo table, IDialectDataAdapter dda, ICdlValueConvertor converter) { var input = new CdlValueHolder(); var output = new CdlValueHolder(); foreach (var col in values) { var colinfo = table.FindColumn(col.Column); if (colinfo == null) { continue; } input.ReadFrom(col.Value); dda.AdaptValue(input, colinfo.CommonType, output, converter); fields.Add(new DmlfUpdateField { TargetColumn = colinfo.Name, Expr = new DmlfLiteralExpression { Value = output.GetValue(), } }); } }
protected virtual void ConvertNotNullValue(ICdlValueReader reader, DbTypeBase type, CdlValueHolder valueHolder, ICdlValueConvertor converter) { converter.ConvertValue(reader, type.DefaultStorage, valueHolder); }