我应该将枚举存储在数据库级别还是应用程序逻辑 (.NET) 中?
我有一个表,我们称之为对象。它有一组预定义的记录,如下所示:
ObjectId ObjectName
1 Salmon
2 Trout
3 Seabass
4 Shark
等等。
所以,我想以某种方式将其实现为枚举。但是最好的方法是什么,是在数据库中为其创建表,还是在 CommonEnums 代码隐藏文件等的应用程序逻辑中实现它?
I have a table, lets call it Objects. It has a predefined set of records looking like this:
ObjectId ObjectName
1 Salmon
2 Trout
3 Seabass
4 Shark
Etc..
So, this I would like to implement somehow as an enum. But what's the best way, implement it in the database creating tables for it or in the application logic in an CommonEnums codebehind file etc?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我们将它们添加到两个地方,我们使用代码生成器来保持值同步。
主要值位于枚举中,但模板会自动生成脚本来更新数据库
我们还向实体添加一个属性以公开枚举属性,而不是保存到数据库的整数
编辑:添加如何执行此操作的示例(在 VB.NET 中:
稍后,EnumHelper 类采用具有属性 EnumDbTableInfo 的类并生成脚本来更新 DB
最好的问候
We add them in both places, we use code generator to keep in sync the values.
The main values are in the Enum but the template automatically generates a script to update the DB
We also add a property to our entities to expose an enum property instead of the integer that is saved to the DB
Edit: Adding an example of how to do it (In VB.NET:
Later an EnumHelper class take the classes that has the attribute EnumDbTableInfo and generates the script to update the DB
Best Regards
如果我需要连接表来获取代码的文本描述以显示给用户(例如报告或临时查询或其他内容),我通常会在数据库中使用外键(查找)表。如果该值严格是内部的(即,从不向任何人显示),或者仅在我的代码中使用,我可以根据需要对其进行翻译,那么我只需对该字段施加约束并跳过外键表。
I generally use a foreign key (lookup) table in the db if I will need to join the tables to get a text description of the code for display to a user, say for a report, or ad hoc querying or something. If the value is strictly internal - that is, never displayed to anyone - or is used only in my code where I can translate it as needed, I would just put a constraint on the field and skip the foreign key table.