加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – 我应该在我的数据库中使用枚举或查询表吗?

发布时间:2020-12-12 16:55:02 所属栏目:MsSql教程 来源:网络整理
导读:在我的数据库中,我有一些定义类型的表 表:出版类型 ID | Type----------1 | Article2 | Abstract3 | Book.... 通过ID键与具有字段TypeID的发布表相关联. 然后,我创建一个PublishTable数据表我的.NET应用程序,我想基于发布类型进行过滤.例如,以下函数给出了特
在我的数据库中,我有一些定义类型的表

表:出版类型


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

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

然后,我创建一个PublishTable数据表我的.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)

要么
>以某种方式使用发布类型表来过滤发布数据集,但是我没有想到如何做到这一点.

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

谢谢

解决方法

如果发布类型基本上是静态的,枚举是正确的

嵌入之间几乎没有区别

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

我更喜欢前者

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

但是如果存在代码需要的核心集静态枚举值,而其余的则不重要,那么以前的解决方案仍然很好

像往常一样,“依赖”;-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读