同步参照完整性表和枚举
我不时地思考这个问题,所以我想我会问你们这个问题。
假设我有一个如下所示的数据库表:
Table: Visibility Id Value -- ----- 0 Visible 1 Invisible 2 Collapsed
这只是确保参照完整性的表格。 它基本上是存储在数据库中的枚举,用于确保出现在其他表中的任何Visiblity值始终有效。
在我的前端,我有一些选择。
- 我可以查询这个表并将其存储在
Dictionary
或Dictionary
。 -
我可以手工编写一个枚举,只需在极少数事件中手动编辑值,即表格有变化。 例如,
public enum Visiblity { Visible, Invisible, Collapsed }
- 别的????
你会建议哪个?为什么?
谢谢。
对于像这样相当琐碎的东西,我通常会使用enum。 我可以认为你觉得它不完全正确……但在我看来,它是两个邪恶中较小的一个。
对此的一些额外理由:如果由于某种原因要添加第四个值,那么您的代码无论如何都需要更新以便能够处理它。 虽然你在这里,但是更新枚举也很麻烦。
如果您需要向表中添加新值,是否需要在应用程序中进行编码更改以支持该新值? 如果是这样,请将其enum
。
根据您的数据库,您可以将可见性字段设为枚举类型。 这样,数据必须是您在创建表时指定的选项之一。
如果必须根据该表中的值在应用程序中执行分支代码,则需要将该表表示为枚举。 如果没有,那就把它变成另一个类就好了。
这是代码生成派上用场的地方 – 如果你使用的东西可以生成一个表作为枚举,你将不必考虑保持表和枚举同步 – 只需将行添加到表中,然后下一行在生成业务层的时候,枚举会自行更新。
如果您有基于枚举的任何业务逻辑,那么您的主要选项是手动同步。 如果这些行也是另一个表的外键(假设你有一个状态查找表),你应该使ID类型成为带有唯一索引而不是Identity的常规int,这样你就可以轻松地维护ID / Value配对如果您在不同的环境中拥有数据库,则相同。
与Scott Ivey的回答相反,我更喜欢(但很少使用)我只维护枚举的方法,并且在应用启动时(或者可能在构建事件上),使用Reflection来确保表值与我的枚举值匹配。 这不需要任何代码生成,但很容易延迟检测参考约束违规。
上述就是C#学习教程:同步参照完整性表和枚举分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1255988.html