В нашем коде C # есть перечисления:
public enum JobStatus
{
Ready = 0,
Running = 1,
Cancelling = 2,
}
Эти значения также хранятся в полях базы данных, и у нас есть лоты TSQL (в основном, хранимые процы, а такжепакетами и службами 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, который "расширит" все перечисление до "магического значения".