示例#1
0
        private void AppendField(IDataReader reader, FbReaderHelper helper, Int32 index)
        {
            // ищем параметры отображения поля по имени поля в базе
            var mapper = _mapper.FieldMappers.FirstOrDefault(
                m => String.Compare(m.ShortDatabaseName, reader.GetName(index), true) == 0);

            if (mapper == null)
                return;

            // в зависимости от типа поля
            switch (mapper.FieldType)
            {
                case FieldType.Binary:
                    // для записи в выходной набор данных используется последний элемент
                    // в коллекции псевдонимов свойства (т. е. последнее значение всегда 
                    // является актуальным, а предыдущие - псевдонимы, оставленные для
                    // обратной совместимости)
                    _writer.AppendField(mapper.DatasetNames.Last(), helper.GetBytes(index));
                    break;
                case FieldType.Boolean:
                    _writer.AppendField(mapper.DatasetNames.Last(), helper.GetBoolean(index));
                    break;
                case FieldType.DateTime:
                    _writer.AppendField(mapper.DatasetNames.Last(), helper.GetDateTime(index));
                    break;
                case FieldType.Decimal:
                    _writer.AppendField(mapper.DatasetNames.Last(), helper.GetDecimal(index));
                    break;
                case FieldType.Int32:
                    _writer.AppendField(mapper.DatasetNames.Last(), helper.GetInt32(index));
                    break;
                default:
                    _writer.AppendField(mapper.DatasetNames.Last(), 
                        helper.GetString(index).TrimEnd((Char)0x20));
                    break;
            }
        }
示例#2
0
 private void WatchForDelayedUpdates(Object data)
 {
     try
     {
         using (var fbReader = new FbReader())
         {
             fbReader.Text = _sqlGetActualUpdates;
             fbReader.NewParameter("@apply_at", DateTime.Now);
             using (var reader = fbReader.ReadMany())
             {
                 var readerHelper = new FbReaderHelper(reader);
                 while (reader.Read())
                 {
                     EnqueueDelayedUpdate(readerHelper.GetInt64(0), (Mode)readerHelper.GetInt32(1));
                 }
             }
         }
     }
     catch (Exception ex)
     {
         _eventLink.Post(ConstHelper.EventSource, _delayedQueueId, ex);
     }
 }