col*_*ium 1 c# sql-server lookup-tables
我们的数据库中有一个表非常类似于标准查找表(ID,描述).但是,这个特定的不是静态的,客户端希望能够动态添加条目.预先填充的一些条目是"特殊的",因为将有代码检查它们(各种业务规则).
通常情况下,我会创建没有自动递增ID的表,因此我可以安全地知道镜像表中条目的枚举始终匹配.然后,只需检查此对象的ID是否与我正在检查的枚举值匹配.
我可以尝试相同的方法,使用不自动递增的ID和仅覆盖未动态添加的条目的枚举.当用户添加新条目时,我们很快就会遇到提出下一个ID的问题.基本上在代码中重新实现数据库的自动增量功能.
如果我切换到使用标识列,则会出现与枚举值不同步的问题.
当然,我总是可以匹配文本的"描述"属性,但由于显而易见的原因,这很糟糕.
有没有一种很好的方式来处理这样的事情? 这个问题并没有真正为我解答.
除了这里给出的解决方案之外,总是有可能为所有查找外键使用完全无意义的标识,但也有一个列将查找链接到业务逻辑的枚举值:
lkpTable
PK Identity
Description
FK LogicEnum NULL
lkpLogic
PK EnumValue
LogicParamColumns
Run Code Online (Sandbox Code Playgroud)
在这种情况下,逻辑被提供而不会被用户改变.甚至可以将新查找路由到使用任何现有逻辑规则 - 因此您可以使用与现有硬编码业务规则相同的不同设置,但显示方式不同.
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |