Я столкнулся с проблемой с Entity Framework Core в .NET Core REST API.
Пример модели данных:
Таблица Дом (id, name) ТаблицаКомнаты (id, houseId, name)
В доме может быть несколько комнат, и комната может быть только в одном доме.
Моя проблема возникает при удалении комнаты.Каждый раз, когда пользователь делает запрос на удаление комнаты, я проверяю, была ли эта комната последней в доме, и если она была последней, я тоже удаляю (пустой) дом.
Room room = dbContext.Room
.Include(r => r.House).ThenInclude(h => h.Rooms)
.Where(r => r.id == id)
.SingleOrDefaultAsync();
if (room.House.Rooms.Count > 1) {
// other rooms are present
dbContext.Room.Remove(room);
} else {
// delete house if it is the last room
dbContext.House.Remove(room.House);
}
dbContext.SaveChanges();
Проблема в том, чтонаш пользовательский интерфейс не удаляет дом за один вызов, он вызывает удаление комнаты для каждой комнаты в доме (и ожидает, что дом будет удален автоматически с последней комнатой).Это вызывает проблему.Вызовы приходят друг за другом, что каждая комната загружает сущность дома, проверяет, является ли она последней, распознает ли другие комнаты, удаляется ли комната, остается ли пустой дом.
Возможно ли это как-то решить (так пустого дома не осталось) например с транзакциями?