Dapper - две колонки, которые будут переключаться во времени (управляется значением конфигурации) - PullRequest
0 голосов
/ 30 января 2019

У меня следующая проблема:
Несколько таблиц со столбцами "data", "token_data", которые переключают свои значения во времени

Фазы:

  1. В текущемФаза 0, есть только столбец «data» (очистить данные).
  2. В фазе 1 будут столбцы «data», «token_data».
  3. В фазе 2 будетстолбцы "token_data", "clear_data".
  4. На последнем этапе 3 должен быть только столбец "data" (к тому времени он должен быть токенизирован).

В настоящее время мыПомните о всех моделях dapper / db с фазой 0.

Есть ли способ подготовить модели Dapper для всех 4 фаз?Я искал атрибут OptionalColumn, но не смог его найти.

В идеале был бы глобальный переключатель конфигурации, который контролировал бы, какое свойство модели Dapper представляет столбец «data» с токенами.

Like:

// Not good
    [Column("Name")]
        public string Name
        {
            get { return AppSettings.TokenizationEnabled ? this.TokenName : _name; }
            set { _name = value; }
        }


1 Ответ

0 голосов
/ 03 февраля 2019

Не совсем понятно, что вам нужно делать.Например, почему вы можете просто создать класс со всеми свойствами и, в зависимости от фазы, вернуть правильные данные для этой фазы.Что-то вроде:

class MyData {
    public int Phase;
    public String Data { private get; public set; }
    public String Token_Data { private get; public set; }
    public String Clean_Data { private get; public set; }
    public String GetData() 
    { 
        switch(Phase): {
        case 1: return Token_Data; break;
        case 2: return Clean_data; break;
        default: return Data; break
    }
}

Кроме этого, в любом случае, я думаю, что функция под названием «Переключение типов на строку» может помочь вам: https://github.com/StackExchange/Dapper#type-switching-per-row

...