diff --git a/PARR.AIHITMainLoader/PARR.AIHITMainLoader.csproj b/PARR.AIHITMainLoader/PARR.AIHITMainLoader.csproj index bab09d97..2c1edbff 100644 --- a/PARR.AIHITMainLoader/PARR.AIHITMainLoader.csproj +++ b/PARR.AIHITMainLoader/PARR.AIHITMainLoader.csproj @@ -7,7 +7,7 @@ - + diff --git a/PARR.AIHITMainSyncer/Services/SyncerService.cs b/PARR.AIHITMainSyncer/Services/SyncerService.cs index 8e826530..70dc91b5 100644 --- a/PARR.AIHITMainSyncer/Services/SyncerService.cs +++ b/PARR.AIHITMainSyncer/Services/SyncerService.cs @@ -288,6 +288,7 @@ private async Task SyncValuesAsync(List values) if (hasNull && !existingValuesInDb.Contains(null)) newValuesToInsert.Add(null); + // Если нет новых значений, выходим БЕЗ вызова CommitAsync if (newValuesToInsert.Count == 0) { logger.LogDebug("Нет новых значений для добавления в базу данных"); @@ -302,15 +303,19 @@ private async Task SyncValuesAsync(List values) }) .ToList(); - // Только добавляем в контекст, НЕ коммитим if (!await unitFieldValueRepository.AddRangeAsync(newFieldValues)) { logger.LogError("Не удалось добавить {Count} новых значений FieldValues в контекст", newValuesToInsert.Count); + return; } - else + // Коммит выполняется ТОЛЬКО если были добавлены новые сущности + if (!await unitFieldValueRepository.CommitAsync()) { - logger.LogDebug("Подготовлено {Count} новых значений FieldValues для сохранения", newValuesToInsert.Count); + logger.LogError("Не удалось сохранить {Count} новых значений FieldValues в базу данных", newValuesToInsert.Count); + return; } + + logger.LogDebug("Успешно сохранено {Count} новых значений FieldValues", newValuesToInsert.Count); } @@ -318,6 +323,7 @@ private async Task SyncValuesAsync(List values) { var newFields = fieldsFromAihit.Where(t => !fieldsFromDB.Any(f => IsStringEqual(f.AihitName, t))).ToList(); + // Если нет новых полей, выходим БЕЗ вызова CommitAsync if (!newFields.Any()) { logger.LogDebug("Нет новых полей для добавления в базу данных"); @@ -335,18 +341,22 @@ private async Task SyncValuesAsync(List values) EsppName = null, }; - // Только добавляем в контекст, НЕ коммитим if (!await unitFieldRepository.CreateAsync(field)) { logger.LogError("Не удалось добавить поле в контекст: {FieldName}", item); + continue; + } + + // Коммит выполняется ТОЛЬКО после успешного добавления конкретного поля + if (!await unitFieldRepository.CommitAsync()) + { + logger.LogError("Не удалось сохранить поле в базу данных: {FieldName}", item); } else { - logger.LogDebug("Подготовлено поле для сохранения: {FieldName}", item); + logger.LogDebug("Успешно сохранено поле: {FieldName}", item); } - } - } - + } } private bool IsStringEqual(string? value1, string? value2) { diff --git a/PARR.AIHITRelationshipsSyncer/PARR.AIHITRelationshipsSyncer.csproj b/PARR.AIHITRelationshipsSyncer/PARR.AIHITRelationshipsSyncer.csproj index 86d1269e..d753153b 100644 --- a/PARR.AIHITRelationshipsSyncer/PARR.AIHITRelationshipsSyncer.csproj +++ b/PARR.AIHITRelationshipsSyncer/PARR.AIHITRelationshipsSyncer.csproj @@ -7,7 +7,7 @@ - + diff --git a/PARR.AIHITSyncerWorker/appsettings.Development.json b/PARR.AIHITSyncerWorker/appsettings.Development.json index 6a9c166d..0a2fa9e5 100644 --- a/PARR.AIHITSyncerWorker/appsettings.Development.json +++ b/PARR.AIHITSyncerWorker/appsettings.Development.json @@ -1,31 +1,27 @@ { - "Logging": { - "LogLevel": { - "Default": "Debug", - "Microsoft.EntityFrameworkCore": "Debug", - "Microsoft.EntityFrameworkCore.Database.Command": "Warning", - "Microsoft.AspNetCore": "Warning" - } - }, - "Serilog": { - "MinimumLevel": { - "Default": "Debug", - "Override": { - //"Microsoft": "Information", - "Microsoft.Hosting.Lifetime": "Information" - } + "ConnectionStrings": { + "RedisConnection": "10.99.253.216:6379,password=ParrP@ssPtk202MMdevDvs" }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] - }, - "MqSettings": { - "HostName": "10.99.253.216" - } + "Serilog": { + "MinimumLevel": { + "Default": "Debug", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Debug", + "PARR.DAL": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, + "MqSettings": { + "HostName": "10.99.253.216" + } } \ No newline at end of file diff --git a/PARR.AIHITSyncerWorker/appsettings.json b/PARR.AIHITSyncerWorker/appsettings.json index 1ba9c4ca..9360a6da 100644 --- a/PARR.AIHITSyncerWorker/appsettings.json +++ b/PARR.AIHITSyncerWorker/appsettings.json @@ -1,6 +1,7 @@ { "ConnectionStrings": { - "DefaultConnection": "Server=10.99.253.184;Database=parr;User Id=app_parr; Password=PosdfkhT&)%sdfligL&%5546;" + "DefaultConnection": "Server=10.99.253.184;Database=parr;User Id=app_parr; Password=PosdfkhT&)%sdfligL&%5546;", + "RedisConnection": "parr-redis:6379,password=ParrP@ssPtk202MMdevDvs" }, "Logging": { "LogLevel": {