Как упоминалось в этом вопросе, «LINQ to SQL позволяет сопоставлениям таблиц автоматически преобразовывать назад и вперед к Enums, указав тип столбца - это работает для строк или целых чисел ». Однако у меня возникают проблемы с этим при использовании хранимых процедур (вместо автоматически сгенерированного SQL) для создания и обновления сущностей.
В моей базе данных есть таблица Users со столбцом Role типа int. У меня также есть хранимая процедура CreateUser, которая принимает параметр @role типа int. Я хочу, чтобы роли пользователей были представлены ролью перечисления в моем коде C #. Я могу изменить тип свойства Role в автоматически созданном классе User с int на Role, но тогда проект отказывается компилироваться, потому что тип свойства Role не соответствует типу параметра роли функции данных (соответствует @ параметр роли в моей хранимой процедуре). Типы параметров функции данных автоматически генерируются LINQ to SQL, и я не могу найти способ их изменить.
Я рассматриваю возможность оставить свойство Role как int, переименовать его во что-то вроде RoleValue, сделать его частным и добавить еще одно общедоступное свойство типа Role, которое выполняет преобразование int-enum. Но похоже, что должен быть способ получше.