代码之家  ›  专栏  ›  技术社区  ›  Azim J

我应该使用枚举还是查询数据库中的表?

  •  12
  • Azim J  · 技术社区  · 16 年前

    表:出版物类型

    ID | Type
    ----------
    1  | Article
    2  | Abstract
    3  | Book
    ....
    

    它通过ID键与具有字段的发布表相关 .

    然后,我在.NET应用程序中创建一个PublicationTable数据表,希望根据发布类型对其进行筛选。例如,以下函数提供特定作者和出版物类型的出版物数量。

        Public Function countPublications(ByVal authorID As Integer, _ 
                                          ByVal publicationType As Integer) As Integer
    
            Dim authPubs As New PublicationsDataSet.tblPublicationsDataTable
            authPubs = Me.getAuthorsPublications(authorID)
    
            Dim dv As New DataView(authPubs)
            dv.RowFilter = "status='published' AND type='" + _ 
                           publicationType.ToString + "'"
    
            Return dv.Count
    
        End Function
    
    

    要调用此函数以获取特定类型作者的文章数量,我可以

    1. 统计出版物(authorID,1)

    2. 设置枚举以便我可以写入

      countPublications(authorID,pubType.Article)

    我还应该考虑其他方法。

    4 回复  |  直到 16 年前
        1
  •  5
  •   Steven A. Lowe    16 年前

    可以说,嵌入之间几乎没有区别

    inner join lookuptable lt on lt.id = (int)myenum.sometype 
    

    在查询和添加中

    inner join lookuptable lt on lt.name = "somehardcodeddescription"
    

    它们都是嵌入的常量,前者后面有一个定义良好的类型

    inner join lookuptable lt on lt.name = myenum.sometype.ToString
    

    我更喜欢前者

    另一方面,如果部署代码后可能添加新的查找类型,则枚举将很快过时;

    但是,如果代码需要一组核心的静态枚举值,而其余的都无关紧要,那么前面的解决方案仍然可以

    和往常一样,“视情况而定”;-)

        2
  •  5
  •   Adam Liss    16 年前

    我同意史蒂文的观点,在前世就有过这样的经历 enum 枚举

    我还建议您对 枚举 ,明确表示值需要与中的值匹配 Publication Types 数据库中的表。

        3
  •  2
  •   MusiGenesis    16 年前

        4
  •  0
  •   Azim J    16 年前

    countPublications(authorID, publicationType.JournalArticle)
    

    如果表中的数据不太可能发生更改,我可以在数据库中添加注释,提醒维护人员(可能是我)更新代码中的枚举类型,反之亦然。