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

.net 我应该使用枚举还是查询数据库中的表?,.net,data-structures,.net,Data Structures,例如,在我的数据库中,我有定义类型的表 表:出版物类型 ID | Type ---------- 1 | Article 2 | Abstract 3 | Book .... ID |类型 ---------- 1 |条 2 |摘要 3 |本书 .... 它通过ID键与具有字段TypeID的发布表相关联 然后,我在.NET应用程序中创建一个PublicationTable数据表,希望根据发布类型对其进行筛选。例如,以下函数提供特定作者和出版物类型的出版物数量 Public Function

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

表:出版物类型

ID | Type ---------- 1 | Article 2 | Abstract 3 | Book .... ID |类型 ---------- 1 |条 2 |摘要 3 |本书 .... 它通过ID键与具有字段TypeID的发布表相关联

然后,我在.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 公共函数countPublications(ByVal authorID为整数,\u ByVal publicationType(作为整数)作为整数 Dim authPubs作为新出版物DataSet.tblPublicationsDataTable authPubs=Me.getAuthorsPublications(authorID) Dim dv作为新数据视图(authPubs) dv.RowFilter=“status='published'和type=”+\u publicationType.ToString+“'” 返回dv.Count 端函数 要调用此函数以获取特定类型作者的文章数量,我可以

  • 用两个整数调用函数

    统计出版物(authorID,1)

  • 设置枚举以便我可以写入

    countPublications(authorID,pubType.Article)

  • 以某种方式使用发布类型表来过滤发布数据集,但我还不知道如何做到这一点

  • <> P>其他什么方法我应该考虑?< /P>
    谢谢

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

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

    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
    
    我更喜欢前者

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

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


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

    在前世就维持了这类东西,我同意Steven的观点,即枚举是相当合理的。代码是清晰的,
    enum
    表示如果添加数据类型,只需更新单个文件

    我还建议注释
    枚举
    ,明确这些值需要与数据库中
    发布类型
    表中的值匹配


    顺便提一下,问得好+我想这取决于你的出版物类型列表在未来改变的频率,以及你能多容易地推出应用程序的更新。如果列表不会经常更改,或者如果在字段中更新应用程序很容易,那么枚举是有意义的。如果列表可能经常更改,或者更新应用程序特别困难,那么将列表保存在数据库中的一个表中是明智的。

    出于各种原因,最好将列表(如“我的出版物类型列表”和其他列表)保存在一个位置;数据库。那么他们只有一个地方可以改变。然而,在我看来,这增加了代码的复杂性,如果我想引用特定的出版物类型,如期刊文章,我仍然需要在代码中包含一些硬编码元素。因此,使用反映表中数据的枚举类型可以以可读的方式调用count函数

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


    谢谢大家的回答。我现在可以放心地继续了。

    正如我所怀疑的那样。如果需要更改my types表中的数据,那么问题就归结为可维护性问题(但在大多数情况下,类型表是静态的)。