Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 41
PostgreSQL

Ручной маппинг свойства object к нужному типу EFCore Pgsql

16.05.2021, 17:02. Показов 1963. Ответов 7

Студворк — интернет-сервис помощи студентам
У меня в классе есть свойство типа object. Я своим кодом гарантирую сохранение в это свойство только строки, но сам класс изменить не могу. Как мне указать efcore какой тип использовать для этого свойства?
Пробовал .HasColumnType("varchar");
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2021, 17:02
Ответы с готовыми решениями:

Приведение e.target к нужному типу
function moveDot(e:Event) { ... if(e.target.y> 600) { e.target.removeEventListener(Event.ENTER_FRAME,moveDot); ...

Выборка по типу нужному значению string
Существует база данных из которой мне нужно выбрать те записи которые из столбца tbl_name(TEXT) соответствую нужному значению. ...

Как привести переменную к нужному типу?
Вот фрагмент кода: String otvet = xmlRazbor.razbor(workXML); System.out.println(otvet); ...

7
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
17.05.2021, 07:28
Artemidas, что значит вы не можете изменить сам класс? Тогда заведите другой, с нормальным свойством.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
17.05.2021, 15:35
Цитата Сообщение от Artemidas Посмотреть сообщение
У меня в классе есть свойство типа object. Я своим кодом гарантирую сохранение в это свойство только строки
Зачем Вы в модель лепите загадочный Object, если заранее известно, что там только строки ?
И как по-Вашему EF должен "распознать" это Object, если там неизвестно что ?

Модель должна полностью соответствовать сущности СУБД, а там нету такого понятия (тип данных), как Object
По крайней мере, в реляционных БД. Если же у Вас БД объектная, то там все совершенно по-другому делается и EF CF тут поможет мало.

Добавлено через 1 минуту
Цитата Сообщение от Artemidas Посмотреть сообщение
Я своим кодом гарантирую сохранение в это свойство только строки
Все эти "гарантии", как и сам код, ультрамариново-равнобедренный для SQL-сервера. Ему подавай четкость и однозначность.
0
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 41
17.05.2021, 16:41  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Artemidas, что значит вы не можете изменить сам класс? Тогда заведите другой, с нормальным свойством
Наверное я не просто так написал что класс изменить не могу, я конечно мог бы сделать промежуточный класс, но если есть встроенные средства маппинга в ef core, то зачем городить костыли и лишние сущности.
Класс изменить не могу потому что он (класс) находиться далеко не в моей сборке, и над ним выполняет действия не мой код, и из бд его тоже будет брать не мой код, мне всего лишь нужно написать реализацию паттерна репозиторий, который будет работать посредством ef core.


Цитата Сообщение от MsGuns Посмотреть сообщение
Зачем Вы в модель лепите загадочный Object, если заранее известно, что там только строки ?
И как по-Вашему EF должен "распознать" это Object, если там неизвестно что ?
Модель должна полностью соответствовать сущности СУБД, а там нету такого понятия (тип данных), как Object
По крайней мере, в реляционных БД. Если же у Вас БД объектная, то там все совершенно по-другому делается и EF CF тут поможет мало.
MsGuns, в заголовке темы указано каким способом можно указать ef core, на правильный тип. Для этого используют маппинг свойств. Если ничего не трогать то ef core сам сопоставит типы, но есть и ручной способ, о нем я и спрашивал. Если вы не знаете ответа на вопрос, то зачем оставлять комментарий?
Цитата Сообщение от MsGuns Посмотреть сообщение
Все эти "гарантии", как и сам код, ультрамариново-равнобедренный для SQL-сервера. Ему подавай четкость и однозначность.
Это все конечно правильно, но я не работаю с SQL сервером, я работаю с EF Core.

Решение моей проблемы, как я и сказал в ручном маппинге, только не с помощью
Цитата Сообщение от Artemidas Посмотреть сообщение
.HasColumnType("varchar");
а
C#
1
2
3
4
5
.Entity<Entity>().Property(e => e.Property)
                .HasConversion(
                    v => (string)v,
                    v => v
                );
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
17.05.2021, 16:44
Цитата Сообщение от Artemidas Посмотреть сообщение
Это все конечно правильно, но я не работаю с SQL сервером, я работаю с EF Core.
Занавес
0
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 41
17.05.2021, 16:46  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
Цитата Сообщение от Artemidas Посмотреть сообщение
Это все конечно правильно, но я не работаю с SQL сервером, я работаю с EF Core.
Занавес
Если бы я вручную готовил данные для сервера, то да, ваш совет мог быть полезен, но мне нужно ef core указать, как воспринимать данные
0
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
17.05.2021, 17:12
Цитата Сообщение от Artemidas Посмотреть сообщение
Наверное я не просто так написал что класс изменить не могу, я конечно мог бы сделать промежуточный класс, но если есть встроенные средства маппинга в ef core, то зачем городить костыли и лишние сущности.
Класс изменить не могу потому что он (класс) находиться далеко не в моей сборке, и над ним выполняет действия не мой код, и из бд его тоже будет брать не мой код, мне всего лишь нужно написать реализацию паттерна репозиторий, который будет работать посредством ef core.
Это звучит как полный бред. Кому в голову пришло object использовать? Костыль тут не лишняя сущность, а object как тип свойства. Это, что, php-way разработки?
0
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 41
17.05.2021, 19:16  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Это звучит как полный бред. Кому в голову пришло object использовать? Костыль тут не лишняя сущность, а object как тип свойства. Это, что, php-way разработки?
Возможно, но не мне судить. Разработчик наверное счел свойство object удовлетворительным. Это свойство для дескриптора job в планировщике. Библиотека не зависит от конкретного планировщика и позволяет использовать любой, если дописать провайдер. До этого все сущности либы хранились в памяти, а мне уже приспичило хранить их в бд. Но даже в таком случае сейчас картина выресовалась достаточно ясно. Я через свою реализаю ef core смаппил object в нужный мне тип, для того планировщика который я использую. Да, я потратил немного времени из-за того что запутался с правильным преобразованием и пытался сделать это через HasColumnType. Но в итоге библиотека исправно работает, и при этом абсолютно независима. Наверное object в данном случае использовался для своего рода полиморфизма, ведь я могу хранить там что угодно, в качестве дескриптора job
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2021, 19:16
Помогаю со студенческими работами здесь

Как привести к нужному мне типу
У меня есть класс А, в котором есть поле IMachineInfo mInfo. Я создаю класс Pump, который extends Machine и implements IMachineInfo. ...

как преобразовать TimeSpan к нужному типу? Windows Forms
timer.Interval = new TimeSpan(hours.Value, min.Value, sec.Value); вот, пишет, что не удаётся преобразовать из decimal в int, окей, я...

Apache cxf jax-rs json + xml как привести к нужному типу
import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.ParameterStyle; import...

Приведение к первоначальному типу Object
День добрый! Есть два метода, отличаются только первой строкой, подскажите как их объединить? private void menuItem_Click(object...

Привести тип Object к типу String
Добрый день! Подскажите, как провести конвертацию? на private my_func() { string element = new string; element =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru