|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|||||||||||
.NET 4.x Маппинг enum в string (EntityFramework) или свой строковый тип08.10.2015, 16:00. Показов 2236. Ответов 12
Метки нет (Все метки)
Уважаемые, требуется совет. Есть сущность:
При этом хочется что бы в БД в атрибуте Type было не интовое значение а строковое. Как можно сделать маппинг в EntityFramework 6, что бы Type как enum, можно было использовать в Linq to Sql запросах ? Как вариант думал отнаследоваться от string и сделать класс со статичными полями этого типа. Тогда в БД были бы строковые значения, и экстеншены распространялись только на мой тип а не на все строки, но от стринга нельзя наследоваться. Подскажите что делать ? как решают такую проблему ?
0
|
|||||||||||
| 08.10.2015, 16:00 | |
|
Ответы с готовыми решениями:
12
Строковый тип. Описать функцию splite(name:string:var first,last:string) с++ строковый тип (string) |
|
57 / 57 / 20
Регистрация: 04.07.2013
Сообщений: 524
|
|
| 08.10.2015, 16:39 | |
|
А чем вас не устраивает хранить целые числа в БД? Просто написать хелпер, который будет коневертировать enum в int и обратно.
0
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
||
| 08.10.2015, 16:50 [ТС] | ||
|
Стоит задача хранить строковое представление значения в базе а в программе строго типизированное значение.
0
|
||
|
57 / 57 / 20
Регистрация: 04.07.2013
Сообщений: 524
|
|
| 08.10.2015, 16:55 | |
|
Ну а если просто записывать в БД значение enum в строковом представлении (TypeOne.ToString()). Если надо обратно получить enum, то воспользоваться Enum.Parse(). Или я не до конца понял задание?
1
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
||||||
| 08.10.2015, 16:58 [ТС] | ||||||
|
KrekerOK, я не совсем понял о чем вы. Если у нас значение типа enum от в БД запишется интовое значение:
Id Type какой-то Guid, 0 А надо что бы было так: Id Type какой-то Guid, TypeOne При этом данные сущности в программе должны быть как-то типизированы для возможности добавления методов расширения.
0
|
||||||
|
57 / 57 / 20
Регистрация: 04.07.2013
Сообщений: 524
|
||||||
| 08.10.2015, 17:03 | ||||||
|
В БД это поле сделайте типа строки, а записывайте так:
1
|
||||||
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|
| 08.10.2015, 17:06 [ТС] | |
|
KrekerOK, Type тогда каким типом должен быть ?
0
|
|
|
57 / 57 / 20
Регистрация: 04.07.2013
Сообщений: 524
|
|
| 08.10.2015, 17:15 | |
|
В базе данных строковым (nvarchar(50) к примеру). В самой программе Enum.
1
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|||
| 08.10.2015, 17:19 [ТС] | |||
|
KrekerOK, что-то я не пойму, в программе вы говорите что будет enum:
Можно пример тогда создания, записи сущности в базу и ее выбанчивание обратно, что бы понятней стало.
0
|
|||
|
57 / 57 / 20
Регистрация: 04.07.2013
Сообщений: 524
|
|||||||||||||||||||||
| 08.10.2015, 17:30 | |||||||||||||||||||||
|
Вот ваше перечисление:
1
|
|||||||||||||||||||||
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|
| 08.10.2015, 17:48 [ТС] | |
|
KrekerOK,
1) это не удобно, т.к. придется каждый раз преобразовывать enum в string в коде 2) не получить добавить методы расширения для моего типа, точнее добавить получится, но воспользоваться ими нет, так как Type в Entity есть string а не EntityType. Хочется более элегантного решения)
0
|
|
|
91 / 91 / 44
Регистрация: 20.04.2008
Сообщений: 331
|
|
| 08.10.2015, 18:44 | |
|
Попробуйте атрибут DataType использовать на свойстве, хотя вряд ли поможет
1
|
|
|
57 / 57 / 20
Регистрация: 04.07.2013
Сообщений: 524
|
|
| 08.10.2015, 20:25 | |
|
Ну тогда удачи вам. Я тоже люблю элегантность в коде. Недавно я хотел найти способ перегрузить explicit operator для enum, но поняв глупость затее - прекратил поиски.
Вам скорее всего это будет трудно сделать, т. к. по своей сути enum это набор строк, каждой из которых соответсвует целое число. Да, кстати, а почему бы вам не создать отдельную таблицу для в БД, хотя это уже будет без enum.
1
|
|
| 08.10.2015, 20:25 | |
|
Помогаю со студенческими работами здесь
13
Строковый тип данных - string! TP Напишите программу с реализацией стека, где его элементы будут иметь строковый тип – string Как перевести свой тип данных в string? Проверка на строковый или символьный тип данных
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|