我们的C#代码中有枚举:
public enum JobStatus
{
Ready = 0,
Running = 1,
Cancelling = 2,
}
这些值也存储在数据库字段中,我们有TSQL的lots (主要是存储的procs,以及一些批处理和SSIS),它也处理数据:
SELECT TOP 1 @JobSID = JobSID
FROM Job
WHERE Status = 0 /* JobStatus.Ready */
ORDER BY SubmitDate ASC
CREATE TABLE ImportCrossEffect(
/* lots deleted */
Source tinyint
DEFAULT 1 NOT NULL -- 0: Unknown (default), 1:Imported, 2:Keyed
)
如何避免在TSQL中硬编码“魔术数字”?
如何消除C#和TSQL端枚举不匹配的风险?
(我已经包含了C#标签,因为我希望解决方案“单一来源”C#和TSQL端的枚举定义)
更新:
我们在数据库中没有包含Enum名称的表,这些值只是存储在很小的int列中。
我希望有一个类似SQL预处理器的东西,它可以将所有枚举“扩展”成“魔术值”。
https://stackoverflow.com/questions/4441436
复制相似问题