示例#1
0
        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);
            }
        }
示例#2
0
        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));
        }
示例#3
0
 private CdlValueHolder WantValue()
 {
     if (!_loadedValue)
     {
         _workingHolder.ReadFrom(_values[_curReadField]);
         _loadedValue = true;
     }
     return(_workingHolder);
 }
示例#4
0
        public object ConvertValue(TypeStorage type, object value)
        {
            m_holder1.ReadFrom(value);
            var srctype = m_holder1.GetFieldType();

            if (srctype == type || srctype == TypeStorage.Null)
            {
                return(value);
            }
            ConvertValue(m_holder1, type, m_holder2);
            return(m_holder2.BoxTypedValue());
        }
示例#5
0
        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(),
                    }
                });
            }
        }
示例#6
0
 public string GetSqlLiteral(object value, DbTypeBase type)
 {
     m_holder.ReadFrom(value);
     return GetSqlLiteral(m_holder, type);
 }