Entity Framework 5 Enum Naming
Я использую EF 5 с миграциями и кодом в первую очередь. Все это работает довольно хорошо, но есть некоторые проблемы / вопросы, которые я хотел бы решить.
Давайте начнем с простого примера. Допустим, у меня есть таблица пользователей и таблица типов пользователей. Таблица пользовательских типов - это таблица enum / lookup в моем приложении. Таким образом, пользовательская таблица имеет столбец UserTypeId и внешний ключ ref и т. Д. Для UserType. В моем poco у меня есть свойство UserType с типом enum.
Чтобы добавить начальные значения в таблицу UserType (или добавить / изменить значения позже) и создать таблицу в исходном миграторе и т. Д. Мне нужно Poco таблицы UserType для представления фактической таблицы в базе данных и использования в файлах карты. Я сопоставил свойство UserType в пользовательском документе с UserTypeId в пользовательском документе. Так что теперь у меня есть poco для кода сначала / миграции / сопоставление контекста и т. Д., И у меня есть enum. Не может иметь одинаковое имя для обоих, поэтому у меня есть poco с именем UserType и что-то еще для enum или poco для UserType будет UserTypeTable или что-то еще?
Что еще более важно, я пропускаю какой-то ключевой элемент в том, как код сначала работает? Я попробовал приведенный выше пример, запустил Add-Migration, и он не добавляет таблицу поиска для enum.
2 ответа
Если я правильно понял ваши вопросы и то, что вы смущены,
Enums support has nothing to do with lookup tables on the Db side.
Enums просто позволяют вам иметь свойства в ваших классах, которые являются Enum-s, и это в основном переводится в 'int'-s - так что там больше ничего нет.
Для получения дополнительной информации вы можете посмотреть это видео от Джули Лерман о поддержке Enum.
надеюсь это поможет
По моему опыту, перечисление более важно для вашего кода, чем класс поиска, поэтому дайте ему правильное имя. Я бы также держал класс поиска изолированным без какого-либо отношения к пользователю в моей модели. Если это только для поиска, то вам не нужно, чтобы он зависал от вашего Пользователя. Ваше перечисление с DescriptionAttribute
может выполнить поиск в вашем коде.
UserTypeLookup
может быть хорошим именем, так как это звучит как то, для чего вы будете его использовать. Затем вы можете использовать этот класс для ведения таблицы.
Предполагая, что вы не отображаете отношения между UserTypeLookup
а также User
в коде ef, единственное, что вам нужно создать в БД вручную, это отношение между ключами UserType
колонка в вашем User
стол и ПК от UserTypeLookup
Таблица. UserTypeLookup
все еще может быть сущностью, и EF все равно должен сгенерировать для нее таблицу БД, даже если вы не устанавливаете для нее никаких отношений.