diff --git a/Atelier/Atelier/Repositories/Implementations/OrderRepository.cs b/Atelier/Atelier/Repositories/Implementations/OrderRepository.cs index 1de539e..b7a64b7 100644 --- a/Atelier/Atelier/Repositories/Implementations/OrderRepository.cs +++ b/Atelier/Atelier/Repositories/Implementations/OrderRepository.cs @@ -36,12 +36,12 @@ SELECT MAX(Id) FROM Orders"; connection.QueryFirst(queryInsert, order, transaction); var querySubInsert = @" INSERT INTO ModelOrder (OrderId, ModelId, Count) -VALUES (@OrderId,@ModelId, @Count)"; +VALUES (@OrderId, @ModelId, @Count)"; foreach (var elem in order.ModelOrder) { connection.Execute(querySubInsert, new { - orderId, + OrderId = orderId, elem.ModelId, elem.Count }, transaction); @@ -61,20 +61,31 @@ VALUES (@OrderId,@ModelId, @Count)"; _logger.LogDebug("Объект: {id}", id); try { - using var connection = new - NpgsqlConnection(_connectionString.ConnectionString); - var queryDelete = @" + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + connection.Open(); + using var transaction = connection.BeginTransaction(); + + // Сначала удаляем связанные записи в таблице ModelOrder + var queryDeleteModelOrder = @" +DELETE FROM ModelOrder +WHERE OrderId=@id"; + connection.Execute(queryDeleteModelOrder, new { id }, transaction); + + // Затем удаляем запись в таблице Orders + var queryDeleteOrder = @" DELETE FROM Orders WHERE Id=@id"; - connection.Execute(queryDelete, new { id }); + connection.Execute(queryDeleteOrder, new { id }, transaction); + + transaction.Commit(); } catch (Exception ex) { _logger.LogError(ex, "Ошибка при удалении объекта"); throw; } - } + public IEnumerable ReadOrders(int? id = null, DateTime?dateForm = null, DateTime? dateTo = null, Status? status = null, int? clientId = null) {