假设我的应用程序中有 n 种类型的用户。
我使用UserType枚举来区分它们。
UserType
我是否需要在数据库中保留一个名为UserType的表?
这样,我可以随时通过查询表而不是搜索应用程序源代码来查找用户类型。
这样做我的源代码可能会变得有些复杂。
我应该接受这种权衡吗?
为了理解数据结构,我们确实创建了具有已定义类型的查找表,即使它们从未更改。通过这种方式,您还可以通过将表与该查询相关联来保持引用完整性。
自动化枚举 通过使用T4模板,您可以轻松地自动化业务层代码以反映数据库更改。因此,每当您更改SQL脚本以更改查找表中的值时,只需运行模板并在枚举中创建其他值。顺便说一句:只需在Visual Studio 2008中单击即可执行所有T4模板。在解决方案资源管理器中选择解决方案,然后单击解决方案资源管理器的迷你工具栏中的图标。瞧。T4全部生成。
Flag枚举 它们都很好,很花哨,但是如果您还要以与业务层相同的方式使用它们,则会使T- SQL脚本复杂化。使用多对多关系也许更明智,但是您将无法自动执行枚举创建,因此在数据库层进行更改也将意味着在业务层进行更改。