我处于需要在数据库中存储付款类型枚举值以保存记录的情况。

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

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

或者我应该有第二列,如 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" } }
    }
}

这种方法非常好,因为您可以轻松地对编码时可能需要的众所周知的特定实例进行编码,而且它的可扩展性也很高。

关于c# - 存储枚举和用户定义值的最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24287820/

10-12 17:38