У нас есть перечисления в нашем коде С#:
public enum JobStatus
{
Ready = 0,
Running = 1,
Cancelling = 2,
}
Эти значения также сохраняются в полях базы данных, и у нас есть лоты TSQL (в основном хранимые 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?
Как удалить риск перечислений, не соответствующих сторонам С# и TSQL?
(Я включил тег С#, так как я хотел бы, чтобы решение, которое "одним источником" определяло перечисления на сторонах С# и TSQL)
Обновление:
У нас нет таблиц в базе данных с именами Enum в них, значения просто хранятся в крошечных столбцах int.
Я надеялся на что-то вроде предварительного процессора SQL, который "расширил" все перечисления там "волшебное значение".