代码之家  ›  专栏  ›  技术社区  ›  steakoverflow

Dapper-两列随时间切换(由配置值控制)

  •  0
  • steakoverflow  · 技术社区  · 7 年前

    我有以下问题:
    A包含“data”、“token_data”列的多个表,这些列随时间切换其值

    阶段:

    1. 在当前阶段0中,只有“数据”列(清除数据)。
    2. 在第一阶段,将有“数据”、“令牌数据”列。
    3. 在第二阶段,将有“令牌数据”、“清除数据”列。
    4. 在最后一个阶段3中,应该只有“数据”列(按 时间应该标记化)。

    目前,我们所有的dapper/db型号都考虑到了0阶段。

    有没有办法为所有4个阶段准备简洁的模型?我正在寻找OptionalColumn属性,但找不到。

    理想情况下,应该有一个全局配置开关来控制哪个Dapper model属性代表标记化的“数据”列。

    比如:

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


    1 回复  |  直到 7 年前
        1
  •  0
  •   mauridb    7 年前

    你需要做什么还不是100%清楚。例如,为什么不能创建一个包含所有属性的类,并根据阶段返回该阶段的正确数据。比如:

    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