将值的翻译存储到相应的显示文本的位置?

时间:2017-01-13 10:18:29

标签: c# .net enums asp.net-mvc-5

这可能是一个天真的问题,但我正在试图找出使用魔术数字的行业最佳实践。我正试图解决两个具体案例 -

  1. 我们希望将它们翻译成人类可读的文本 - 例如,交易是借记还是贷记可能会存储为数据库中的位字段,但真/假/ 0/1需要显示为“借记” “或”信用“等。
  2. 我们希望使用源代码中的幻数 - 我们通常将它们翻译为枚举。 Enums摆脱了神奇的数字,但硬编码很难与数据库值保持同步。
  3. 在中等规模的应用程序中,我们最终可能会有数百到数千个此类翻译,例如 -

    上下文 - {Value,Translation}

    TransactionType - {0,Debit},{1,Credit}

    FileType - {0,CSV},{1,XML},{2,Excel}

    ItemType - {0,Manual},{1,Automated},{2,Writeoff},{3,System}

    我无法找到允许从数据库动态同步/加载枚举的解决方案,并允许将数据库值转换为文本而不会丢失参照完整性。

    我看到以下选项 -

    1. 在UI中进行硬编码(视图或通过GetDisplayTextFor(int)方法等)。
    2. 一些外部文本/ XML文件。
    3. 包含列(上下文,值,翻译)的数据库表 - 但现在我们在“上下文”列中创建了新的幻数。
    4. 每组此类映射的数据库表,其值为引用外键 - 这将允许引用完整性,但这意味着可能会添加大量表。
    5. 此问题的行业惯例是什么?枚举可以直接从数据库生成,是否可以转换为文本或者应该完全避免枚举?任何其他标准解决方案/模式至少可以解决尽可能多的问题?

0 个答案:

没有答案