我应该将枚举 ID/值存储在数据库中还是 C# 枚举中?
假设我的数据库表包含 UserType
、SalesType
等列。
我是否应该拥有包含 UserTypeID
、userTypeName
的数据库表或者我应该创建一个 C# 枚举?
Say my database tables have columns like UserType
, SalesType
, etc.
Should I have database tables with UserTypeID
, userTypeName
or should I just create a C# enumeration?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
两者有什么问题吗? 如果值是用户定义的或更改的,那么
enum
肯定不合适。如果值是严格不变的(例如性别),您可以将它们作为枚举以便于在应用程序中引用,也可以在数据库中作为单独的表来强制执行外键并作为引用。
What's wrong with both? If value's are user-defined or changing, definitely
enum
will not be suitable.If values are strictly non-changing (such as gender), you can have them as
enums
for ease of reference in the application and also in the DB as separate table to enforce foreign keys and as a reference.这取决于。 我在下面列出了每种方法的一些优点和缺点。 一般来说,如果应用程序需要使用值来做出决策,我强烈喜欢枚举。 正如 Mehdrad 提到的,您可以使用这两种方法,但需要付出额外的努力来保持列表同步。
查找表:
通过外键
枚举:
It depends. I listed a few pros and cons for each approach below. In general, I strongly prefer enums if the application needs to use a value to make decisions. As Mehdrad mentioned, you can use both approaches but it requires extra effort to keep the lists in sync.
Lookup tables:
through foreign keys
Enum:
在我的项目中,我使用我的应用程序 dbscript 从数据库生成 C# const,因此代码始终匹配数据库值。
当然,如果您的代码根据 Type 字段的值执行特定操作,则仅需要使用 C# 枚举。
In my projects, I use my application dbscript to generate C# consts from database, so code always matches db values.
Of course, you only need to have C# enums if your code does something specific depending on the value of the Type field.
如果列表足够稳定,可以使用枚举,那么我将在代码中使用枚举以及数据库中的表(使其成为数据一致性的外键)。
If the list is stable enough to use an enum, then I would use an enum in your code plus a table in the database (make it a foreign key for data consistency).