一尘不染

SQL表和C#枚举

sql

假设我的应用程序中有 n 种类型的用户。

我使用UserType枚举来区分它们。

我是否需要在数据库中保留一个名为UserType的表?

这样,我可以随时通过查询表而不是搜索应用程序源代码来查找用户类型。

这样做我的源代码可能会变得有些复杂。

我应该接受这种权衡吗?


阅读 129

收藏
2021-03-17

共1个答案

一尘不染

是的,请同时使用:UserType查找表和枚举

为了理解数据结构,我们确实创建了具有已定义类型的查找表,即使它们从未更改。通过这种方式,您还可以通过将表与该查询相关联来保持引用完整性。

自动化枚举
通过使用T4模板,您可以轻松地自动化业务层代码以反映数据库更改。因此,每当您更改SQL脚本以更改查找表中的值时,只需运行模板并在枚举中创建其他值。顺便说一句:只需在Visual
Studio 2008中单击即可执行所有T4模板。在解决方案资源管理器中选择解决方案,然后单击解决方案资源管理器的迷你工具栏中的图标。瞧。T4全部生成。

Flag枚举
它们都很好,很花哨,但是如果您还要以与业务层相同的方式使用它们,则会使T-
SQL脚本复杂化。使用多对多关系也许更明智,但是您将无法自动执行枚举创建,因此在数据库层进行更改也将意味着在业务层进行更改。

2021-03-17