Когда вы говорите, что поле DB имеет длину 4, это означает 4 байта, что эквивалентно Int32 (4 байта = 32 бита). Вот почему ваш столбец возвращается как int32.
Существуют разные целочисленные типы данных в SQL Server - если вы уверены, что число не превысит 6, вы должны объявить столбец в базе данных как "tinyint", который использует один байт и может содержать значения от 0 до 255. Затем источник данных SQL должен преобразовать его в «байтовый» тип данных, который подойдет для ваших целей.
CLR "byte" == SQL "tinyint" (1 байт)
CLR "Short" (или int16) == SQL "smallint" (2 байта)
CLR "int32" == SQL "int"
РЕДАКТИРОВАТЬ: просто потому, что вы можете что-то делать, не значит, что вы должны - я согласен с Michael Haren , головная боль при разработке этих менее распространенных типов данных перевешивает небольшой прирост производительности, который вы получите если вы не имеете дело с очень высокопроизводительным программным обеспечением (в таком случае, почему вы используете ASP.NET?)