Во что я могу конвертировать TimeStamp?

Ничего себе, это удивительно. Когда вы устанавливаете значение в свойстве зависимостей, выражения привязки обновляются до запуска значения.

Если вы посмотрите на DependencyObject.SetValueCommon в Reflector, вы можете увидеть вызов Expression.SetValue на полпути через этот метод. Вызов UpdateEffectiveValue, который будет вызывать ваш CoerceValueCallback, находится в самом конце, после того, как привязка уже обновлена.

Вы также можете увидеть это в классах инфраструктуры. Из нового приложения WPF добавьте следующий XAML:

<StackPanel>
    <Slider Name="Slider" Minimum="10" Maximum="20" Value="{Binding Value, 
        RelativeSource={RelativeSource AncestorType=Window}}"/>
    <Button Click="SetInvalid_Click">Set Invalid</Button>
</StackPanel>

и следующий код:

private void SetInvalid_Click(object sender, RoutedEventArgs e)
{
    var before = this.Value;
    var sliderBefore = Slider.Value;
    Slider.Value = -1;
    var after = this.Value;
    var sliderAfter = Slider.Value;
    MessageBox.Show(string.Format("Value changed from {0} to {1}; " + 
        "Slider changed from {2} to {3}", 
        before, after, sliderBefore, sliderAfter));
}

public int Value { get; set; }

Если вы перетащите ползунок, а затем нажмите кнопку, вы получите сообщение типа «Значение изменилось с 11 на -1, слайдер изменился с 11 на 10».

0
задан katit 17 January 2019 в 17:14
поделиться

2 ответа

Взято из документов

отметка времени является синонимом для типа данных rowversion и зависит от поведения синонимов типа данных. В выражениях DDL везде, где это возможно, используйте метку строки вместо метки времени. Для получения дополнительной информации см. Синонимы типов данных (Transact-SQL).

и

Синтаксис метки времени устарел.

и

Тип данных, который предоставляет автоматически генерируемые уникальные двоичные числа в базе данных. rowversion, как правило, используется в качестве механизма для строк таблицы штампов версий. Размер хранилища составляет 8 байт.

Итак, соберите все вместе: представьте TIMESTAMP (который должен быть ROWVERSION) как бессмысленный 8-байтовый двоичный файл. Если вы действительно хотите что-то с этим сделать, вы можете сохранить его как 8-байтовый двоичный файл или преобразовать его в тип длиной 8 байт. В этом случае я бы предложил BIGINT.

0
ответ дан Shnugo 17 January 2019 в 17:14
поделиться

Во-первых, следует понимать, что отметка времени НЕ является значением типа date and time, а скорее уникальным идентификатором, основанным на данных этого типа.

Я предлагаю вам ознакомиться с документацией Типы и функции данных даты и времени (Transact-SQL) и выбрать тип данных, который наилучшим образом соответствует вашим потребностям. Это может быть DATETIME2, DATETIMEOFFSET, DATETIME

0
ответ дан Esteban 17 January 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: