存储枚举和用户定义值的最佳实践

本文关键字:最佳 定义 枚举 用户 存储 | 更新日期: 2023-09-27 18:09:13

我需要在数据库中存储支付类型枚举值以进行记录保存。

问题是我想为最终用户添加定义他们自己的值类型的能力。

我知道我可以在我自己的枚举中使用负范围,因为用户定义的类型将具有大于0的id,但这是一种正确的方法吗?

或者我应该有第二个列,如CustomPaymentType和引用PaymentType表的数据一致性?

存储枚举和用户定义值的最佳实践

不要使用枚举。

枚举只对那些本质上是常量的东西有用,比如星期几。

在数据库中使用一个引用表,如CustomPaymentType (Id,PaymentTypeName)然后您可以使用如下的类:

public class CustomPaymentType
{
    public string paymentTypeName { get; private set; }
    public int Id { get; private set; }
    // if you need "Constant payment types usable in code, just add something like:
    public static CustomPaymentType CashPayment
    {
        get { return new CustomPaymentType() { Id = 7, paymentTypeName= "CashPayment" } }
    }
    public static CustomPaymentType CreditPayment
    {
        get { return new CustomPaymentType() { Id = 7,paymentTypeName= "CreditPayment" } }
    }
}

这种方法非常好,因为您既可以轻松地编写编码时可能需要的已知特定实例,而且它也非常可扩展。