コード例 #1
0
        protected override void ApplyTypeRestrictions(BedValueHolder holder, DbTypeBase type, ILogger logger)
        {
            base.ApplyTypeRestrictions(holder, type, logger);

            var dtype = type as DbTypeDatetime;
            var htype = holder.GetFieldType();

            if (dtype != null && htype != TypeStorage.DateTime)
            {
                var val = holder.GetDateTimeValue();
                if (dtype.GetSpecificAttribute("mssql", "subtype") == "datetime2" && m_dialect.Version.Is_2008())
                {
                    val.MakeRestriction(m_mindatetime2, m_maxdatetime2);
                }
                else if (dtype.GetSpecificAttribute("mssql", "subtype") == "smalldatetime")
                {
                    val.MakeRestriction(m_minsmalldatetime, m_maxsmalldatetime);
                }
                else if (dtype.SubType == DbDatetimeSubType.Time && m_dialect.Version.Is_2008())
                {
                    holder.SetString(val.TimePart.ToStringNormalized());
                    return;
                }
                else
                {
                    val.MakeRestriction(m_mindatetime, m_maxdatetime);
                }
                holder.SetDateTime(val.AsDateTime);
            }
        }
コード例 #2
0
        protected override void ApplyTypeRestrictions(BedValueHolder holder, DbTypeBase type, ILogger logger)
        {
            var htype = holder.GetFieldType();

            if (htype == TypeStorage.String)
            {
                return;                              // skip string restrictions
            }
            base.ApplyTypeRestrictions(holder, type, logger);
        }
コード例 #3
0
        public static SynFootprint FromReader(IBedRecord record, int keylen, BedValueHolder holder, BedValueConvertor conv, IDataSynAdapter adapter)
        {
            var res = new SynFootprint();

            res.KeyData = new string[keylen];
            for (int i = 0; i < keylen; i++)
            {
                record.ReadValue(i);
                conv.ConvertValue(record, TypeStorage.String, holder);
                res.KeyData[i] = holder.GetString();
            }
            record.ReadValue(keylen);
            res.Hash = adapter.ReadHash(record, conv, holder);
            return(res);
        }
コード例 #4
0
        protected override void ApplyTypeRestrictions(BedValueHolder holder, DbTypeBase type, ILogger logger)
        {
            var htype = holder.GetFieldType();
            var dtype = type as DbTypeDatetime;

            if (dtype != null && type.GetSpecificAttribute("mysql", "subtype") == "timestamp" && htype.IsDateRelated())
            {
                var val = holder.GetDateTimeValue();
                val.MakeRestriction(m_mintimestamp, m_maxtimestamp);
                val.MakeValidDate();
                holder.SetDateTimeEx(val);
            }

            base.ApplyTypeRestrictions(holder, type, logger);
        }
コード例 #5
0
        private IEnumerable <IBedRecord> EnumUpgradeGridRows(GridTable srcgrid, GridTable dstgrid, ITableStructure ts)
        {
            var ensrc  = srcgrid.EnumRows(new TableDataSetProperties()).GetEnumerator();
            var endst  = dstgrid.EnumRows(new TableDataSetProperties()).GetEnumerator();
            var holder = new BedValueHolder();

            for (; ;)
            {
                if (!ensrc.MoveNext())
                {
                    break;
                }
                if (!endst.MoveNext())
                {
                    break;
                }
                var newrec = new ArrayDataRecord(ts);

                for (int i = 0; i < m_srcInfo.KeyCols.Length; i++)
                {
                    newrec.SeekValue(i);
                    ensrc.Current.ReadValue(i);
                    ensrc.Current.WriteTo(newrec);
                }

                for (int i = 0; i < m_srcInfo.DataCols.Length; i++)
                {
                    newrec.SeekValue(m_srcInfo.KeyCols.Length + i);
                    ensrc.Current.ReadValue(m_srcInfo.KeyCols.Length + i);
                    ensrc.Current.WriteTo(newrec);
                }

                for (int i = 0; i < m_dstInfo.DataCols.Length; i++)
                {
                    newrec.SeekValue(m_srcInfo.KeyCols.Length + m_srcInfo.DataCols.Length + i);
                    endst.Current.ReadValue(m_srcInfo.KeyCols.Length + i);
                    endst.Current.WriteTo(newrec);
                }

                yield return(newrec);
            }
        }