我不认为我的问题是正确的,但希望你知道我在问什么。
使用字符串值表示数据库字段(或任何变量)与使用枚举或常量的优缺点是什么?我不是在询问数据类型,而是在后端如何处理它。我将使用LINQ作为示例。
我的想法是,通过使用一个可枚举或常量,它是:易于阅读,确保在值需要更改时兼容,并且该值是硬编码的-so,因此错误由错误引起的可能性较小。另一方面,我真的需要一个具有成员枚举的类/结构,它实质上是查找我想要的值吗?
使用常量
Module Trip
Public Const OPEN As String = "Open"
Public Const PENDING_PAYMENT As String = "Pending Payment"
Public Const CANCELLED As String = "Cancelled"
Public Const CLOSED As String = "Closed"
End Module
Dim product = From p In db.Payments
Where p.PaymentId = PaymentId
For Each item In product
item.Status = PayStatus.PENDING_PAYMENT
Next使用字符串
Dim product = From p In db.Payments
Where p.PaymentId = PaymentId
For Each item In product
item.Status = "Pending Payment"
Next发布于 2014-01-12 16:15:35
正如其中一条注释所述,处理此问题的常见方法是在数据库中使用查找表。在其最简单的形式中,您将有一个类,比方说PaymentStatus
Class PaymentStatus
Public Property Id As Integer
Public Property Name As String
End Class而Payment将具有引用属性,如
Public Property PaymentStatus As PaymentStatus这样,您就可以始终从数据库中获得选项,并且永远不会在代码中输入错误。添加选项或更改描述也要容易得多。
例如,如果您决定“取消”需要区分为“被用户取消”(旧状态)和“被系统取消”(由新业务逻辑引入的新状态),那么需要做些什么。您需要一个脚本来将数据库中的所有记录更新为新的字符串(并更改代码,但无论如何都要更改代码)。查找表允许只更新一条记录(并在本例中添加一条新记录)。
https://stackoverflow.com/questions/21072304
复制相似问题