protected InsertSections GetTableInsert(TableKey table)
        {
            InsertSections result = null;

            if (_tableToInsertStatments.TryGetValue(table, out result))
            {
                return(result);
            }


            result = new InsertSections( );

            result.InsertTemplate = SqlInsertStatments.GetInsertIntoTable(table);
            result.TableName      = table.Name;

            _tableToInsertStatments.Add(table, result);

            return(result);
        }
        public virtual void ProcessColumn
        (
            ColumnInfo column,
            IDbCommand insertCommand,
            DataParamFactory parameterFactory
        )
        {
            InsertSections insert = GetTableInsert(column.Table);

            insert.ColumnNames.Add(column.Name);
            insert.ParametersValueNames.Add("@" + column.Name);     //TODO: add a parameter name to the column class
            //insert.ParametersValueNames.Add ( column.Values[0] ) ;


            System.Data.IDbDataParameter param;

            object value = DBNull.Value;

            if (null != column.Values && column.Values.Count != 0)
            {
                //TODO: multivalue must be stored in their own table where each value is a row
                //in order to support proper query
                value = column.Values[0];

                if (null == value)
                {
                    value = DBNull.Value;
                }
            }

            param = parameterFactory("@" + column.Name, value);

            Parameters.Add(param);

            if (null != insertCommand)
            {
                insertCommand.Parameters.Add(param);
            }
        }