SQL表和C#枚举

use*_*312 17 c# sql

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

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

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

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

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

我应该承认这种交易吗?

Rob*_*nik 14

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

为了理解数据结构,我们确实创建了具有已定义类型的查找表,即使它们永远不会更改.这样,您还可以通过将表与此查找相关联来保持参照完整性.

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

标记枚举
它们都很好用,但它会使T-SQL脚本复杂化,以防您以与业务层相同的方式使用它们.也许使用多对多关系更明智,但是你无法自动创建枚举,因此在数据库层上进行更改也意味着在业务层上进行更改.


小智 9

通常在实践中,您在数据库中有一个表,并在源代码中有相应的枚举.

枚举使您可以轻松使用对您没有意义的值.

在数据库中拥有一个表可以让您执行查询并查看结果中有意义的值+强制数据完整性(外键).

这里的挑战是使表值与枚举的值保持同步.但它在实践中运作良好.