当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我应该使用枚举还是查询数据库中的表格?》经验,为你挑选了2个好方法。

在我的数据库中,我有表定义类型的表

表:出版物类型


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

通过ID键将其与具有字段TypeID的发布表相关联.

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


    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

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

    用两个整数调用函数

    countPublications(authorID,1)

    设置枚举,以便我可以写

    countPublications(authorID,pubType.Article)

    要么

    以某种方式使用发布类型表来过滤发布数据集,但我还没有理解如何做到这一点.

我应该考虑哪些其他方法.

谢谢



1> Steven A. Lo..:

如果发布类型基本上是静态的,枚举就可以了

嵌入之间几乎没有什么区别

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> Adam Liss..:

在以前的生活中保持了这种事情,我同意史蒂文的观点,这enum是非常合理的.您的代码是清晰的,enum如果添加数据类型,则表示您只需要更新单个文件.

我还建议对其进行评论enum,明确表示值必须与Publication Types数据库中表格中的值相匹配.

好的问题,顺便说一下!+1用于如此清楚地解释问题并花时间在发布之前集体讨论解决方案.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有