поэтому обращаюсь к вам.
Суть вопроса: создаю новую сущность для вставки в базу данных. В
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 апдейчу свойства
Соединять не через ид а через объект целиком
То бишь просто создавать объедк в объедке без ассайна Id друг друга?
Понял, спассибо. Буду пробовать :)
В крайнем случае var room = new Room(); Var player = new Player(); player.Room = room;
А еще можешь кастомный сетер на проп RoomPlayers сделать шоб там внутри ставить this как связь
идея интересная, но не совсем понял как такое реализовать
AddAsync самостоятельно делает SaveChangesAsync. Эти методы AddAsync/UpdateAsync/etc не рекомендуется использовать, они созданы для обратной совместимости каких-то штук (в описании можешь найти подробнее инфу)
Тип такого как выше
а какие тогда юзать)
var c = new MyClass { InnerObject = new InnerClass... }; Главное чтобы InnerObject не имел заданного Id, иначе EF Core посчитает что он уже существует и попробует найти существующую запись
Add/Update/etc
Нашел вот такое: 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.
HiLo нормальная движуха для айдишников, но прихотливая может быт
Попробуй в обьекте Room { Id = Guid.NewGuid()} тогда вроде должно все работать как написано. Просто щас ты создание гуида отдаешь на БД, а тут генеришь сам. Лучше в коде генерить.
Обсуждают сегодня