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

EF core 6 mapping

08.09.2022, 09:51. Показов 1033. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли как-то замапить словарь в данном класе?

C#
1
2
3
4
5
6
7
8
9
    public class ChatGroup
    {
        public int Id {get; set;}
        public string Title { get; set; }
        public string Description { get; set; }
        public Image AvatarImage { get; set; }
        
        public IDictionary<User, UserRole> Members { get; set; }
    }
ChatGroups
id
Title
Description
AvatarImage

UsersChatGroups
ChatGroupId
UserId
Role
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2022, 09:51
Ответы с готовыми решениями:

Bump Mapping
Кто-нибудь объясните доходчиво... как считать tengent,binormal откуда брать bump map и как вообще это работает... везде видел разную...

Bump Mapping
Помогите, разобраться с этой техникой, а то я что-то уже неделю сижу никак не получается сделать правильно, прошу помощи пожалуйста. ...

Lua mapping
Кто программировал карты lua отзовитись нужна помощь с работой в 3ds. Нужен специалист или помощь в программировании карты с 0!

9
 Аватар для esperanto_qun
1124 / 656 / 393
Регистрация: 28.01.2021
Сообщений: 1,336
08.09.2022, 12:24
Bellatrix27, Да, добавить в виде Json.

C#
1
2
3
4
5
6
7
8
9
10
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
 
    modelBuilder.Entity<ChatGroup>()
        .Property(b => b.Members)
        .HasConversion(
            v => JsonConvert.SerializeObject(v),
            v => JsonConvert.DeserializeObject<Dictionary<User, UserRole>>(v));
}
1
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
08.09.2022, 13:10
Bellatrix27, а вы уверены, что правильно понимаете, что делаете? Такие "словари" на базе SQL делать надо, если нет прямо объективных причин поступать иначе.
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 35
08.09.2022, 16:53  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Bellatrix27, а вы уверены, что правильно понимаете, что делаете?
Не уверен, просто пишу свой pet проект. Ни когда раньше не пробовал code-first и вот тут решил попробовать.

Цитата Сообщение от Usaga Посмотреть сообщение
Такие "словари" на базе SQL делать надо
Немного не понял. Вы имеете ввиду model-first?
0
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
08.09.2022, 16:55
Цитата Сообщение от Bellatrix27 Посмотреть сообщение
Немного не понял. Вы имеете ввиду model-first?
Я имею в виду схему базы данных. EF тут, в целом, ни причём. Вы что смоделировать-то хотели? Какие отношения и между чем и чем? Из этого надо исходить.
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 35
08.09.2022, 17:11  [ТС]
Есть таблицы ChatGroups и ChatChannels у них связь многие ко многим к Users, EF Core это успешно сделал, но в дополнительных таблицах (ChatGroupUser и ChatChannelUser), я хочу добавить третье поле Role, которое я добавил вручную на прикреплённой схеме.
Миниатюры
EF core 6 mapping  
0
HF
 Аватар для HF
1316 / 895 / 200
Регистрация: 09.09.2011
Сообщений: 2,689
Записей в блоге: 2
08.09.2022, 18:51
Цитата Сообщение от esperanto_qun Посмотреть сообщение
C#
1
2
3
4
       .HasConversion(
            v => JsonConvert.SerializeObject(v),
            v => JsonConvert.DeserializeObject<Dictionary<User, UserRole>>(v));
}
Это что, сейчас так пишут? Что-то я сильно, очень сомневаюсь... причём очень очень. Как там с производительностью и с памятью?
0
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
09.09.2022, 02:40
Bellatrix27, вам роли надо в таблицу связи добавить? Ну так добавляйте, причём тут Dictionary какие-то? Вам нужно таблицы связей (раз вы в них что-то пихать собрались) добавить явно в модель. И почему роли в виде строк? Это же явно что-то связанное с правами доступа (админ, пользователь, модератор...). Вы текстом роли обозначать собрались?
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 35
09.09.2022, 08:45  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
причём тут Dictionary какие-то?
Я считаю, что так удобней работать с моделью в коде, в отличие от явного выделения связывающей таблицы, доступ к которой предоставляет лишние данные.
Цитата Сообщение от Usaga Посмотреть сообщение
Вам нужно таблицы связей (раз вы в них что-то пихать собрались) добавить явно в модель.
Вы имеете ввиду что-то на подобие вот этого?

User
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
    public class User
    {
        public PersonalName PersonalName { get; set; }
        public string UserName { get; set; }
        public Password Password { get; set; }
 
        public ICollection<ChatGroup> ChatGroups { get; set; }
    }


ChatGroup
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
    public class ChatGroup
    {
        public int Id {get; set;}
        public string Title { get; set; }
        public string Description { get; set; }
        public Image AvatarImage { get; set; }
        
        public ICollection<User> Members { get; set; }
        public List<ChatGroupUsers> ChatGroupUsers { get; set; }
    }


ChatGroupUsers
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
    public class ChatGroupUsers
    {
        public int UserId {get; set;}
        public User User {get; set;}
        public int ChatGroupId { get; set; }
        public ChatGroup ChatGroup { get; set; }
        public UserRole UserRole { get; set; }
        
    }


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ChatGroup>()
            .HasMany(x => p.Members)
            .WithMany(x => p.ChatGroups)
            .UsingEntity<ChatGroupUsers>(
                j => j
                    .HasOne(x => x.User)
                    .WithMany(x => x.ChatGroups)
                    .HasForeignKey(x => x.UserId),
                j => j
                    .HasOne(x => x.ChatGroup)
                    .WithMany(x => x.ChatGroups)
                    .HasForeignKey(x => x.ChatGroupId),
                j =>
                {
                    j.Property(x => x.UserRole ).HasConversion(enum to string);
                    j.HasKey(x => new { x.UserId, x.ChatGroupId });
                });
    }
0
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
09.09.2022, 10:28
Цитата Сообщение от Bellatrix27 Посмотреть сообщение
Я считаю, что так удобней работать с моделью в коде, в отличие от явного выделения связывающей таблицы, доступ к которой предоставляет лишние данные.
А как с этим работать на уровне базы? Никак?

Цитата Сообщение от Bellatrix27 Посмотреть сообщение
Вы имеете ввиду что-то на подобие вот этого?
Ага.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2022, 10:28
Помогаю со студенческими работами здесь

Dictionary mapping
Добрый день. Дано: список List&lt;B&gt; b и типclass T { public B prop; public double time; public T(B prop, double...

XML Mapping
Помогите разобраться, натолкните на мысль... Вообщем есть xml с разным количеством строк (до 9000), с помощь xml mapping, преобразую...

Entity Mapping
Всем доброго времени суток. Пишу проект на Java, мне Эклипс подчеркивает строку в XML, что я не так делаю? Я просто новичок и мало об этом...

File Mapping
Здравствуйте. Мне нужно сделать общий буфер используя FileMapping. В целом картина выглядит так: главный процесс создает файл и проецирует...

NHibernate mapping
Доброго времени суток! Есть база данных и соответственно мое приложение конструкцию взял из книги по NHibernate. Ну, а теперь меньше...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Переходник 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