169 похожих чатов

Всем привет! Я немного забыл как там EF работает,

поэтому обращаюсь к вам.

Суть вопроса: создаю новую сущность для вставки в базу данных. В
Room
имеется свойство
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
и соединенное свойство с другой таблицей

public int? RoomPlayerId { get; set; }

[ForeignKey("RoomPlayerId")]
public virtual RoomPlayers RoomPlayers { get; set; }

Вопрос: можно ли делать так, как я хочу(на фото) и если да, то как в таком случае получить айдишним Room.


Сейчас делать так:
1. Создаю Room.
2. Добавляю через _repo.AddAsync() + _repo.SaveChangesAsync().
3. Создаю RoomPlayers
4. Добавляю через _repo.AddAsync() + _repo.SaveChangesAsync().
5. в Room, созданный в пункте 1 ассайню этот RoomPlayers и через Update апдейчу свойства

16 ответов

32 просмотра

Соединять не через ид а через объект целиком

Ihor-Volokhovych Автор вопроса
Влад Ого
Соединять не через ид а через объект целиком

То бишь просто создавать объедк в объедке без ассайна Id друг друга?

Ihor-Volokhovych Автор вопроса
Влад Ого
+

Понял, спассибо. Буду пробовать :)

Ihor Volokhovych
То бишь просто создавать объедк в объедке без асса...

В крайнем случае var room = new Room(); Var player = new Player(); player.Room = room;

Ihor Volokhovych
То бишь просто создавать объедк в объедке без асса...

А еще можешь кастомный сетер на проп RoomPlayers сделать шоб там внутри ставить this как связь

Ihor-Volokhovych Автор вопроса
Влад Ого
А еще можешь кастомный сетер на проп RoomPlayers с...

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

AddAsync самостоятельно делает SaveChangesAsync. Эти методы AddAsync/UpdateAsync/etc не рекомендуется использовать, они созданы для обратной совместимости каких-то штук (в описании можешь найти подробнее инфу)

Ihor Volokhovych
То бишь просто создавать объедк в объедке без асса...

var c = new MyClass { InnerObject = new InnerClass... }; Главное чтобы InnerObject не имел заданного Id, иначе EF Core посчитает что он уже существует и попробует найти существующую запись

Ihor-Volokhovych Автор вопроса
Vova Lantsov 🇺🇦
AddAsync самостоятельно делает SaveChangesAsync. Э...

Нашел вот такое: This method is async only to allow special value generators, such as the one used by 'Microsoft.EntityFrameworkCore.Metadata.SqlServerValueGenerationStrategy.SequenceHiLo', to access the database asynchronously. For all other cases the non async method should be used.

Ihor Volokhovych
Нашел вот такое: This method is async only to allo...

HiLo нормальная движуха для айдишников, но прихотливая может быт

Попробуй в обьекте Room { Id = Guid.NewGuid()} тогда вроде должно все работать как написано. Просто щас ты создание гуида отдаешь на БД, а тут генеришь сам. Лучше в коде генерить.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта