fix(aihitMainSyncer): Добавлен commit после синхронизации новых полей и новых значений полей: раньше вызывал null ошибку при получении Id новых значений.

This commit is contained in:
Mikhail Kuznetsov
2026-06-25 12:19:32 +10:00
parent fe4461ee4e
commit 8dfb2587b2
5 changed files with 46 additions and 39 deletions

View File

@@ -7,7 +7,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.17" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -288,6 +288,7 @@ private async Task SyncValuesAsync(List<string?> values)
if (hasNull && !existingValuesInDb.Contains(null)) if (hasNull && !existingValuesInDb.Contains(null))
newValuesToInsert.Add(null); newValuesToInsert.Add(null);
// Если нет новых значений, выходим БЕЗ вызова CommitAsync
if (newValuesToInsert.Count == 0) if (newValuesToInsert.Count == 0)
{ {
logger.LogDebug("Нет новых значений для добавления в базу данных"); logger.LogDebug("Нет новых значений для добавления в базу данных");
@@ -302,15 +303,19 @@ private async Task SyncValuesAsync(List<string?> values)
}) })
.ToList(); .ToList();
// Только добавляем в контекст, НЕ коммитим
if (!await unitFieldValueRepository.AddRangeAsync(newFieldValues)) if (!await unitFieldValueRepository.AddRangeAsync(newFieldValues))
{ {
logger.LogError("Не удалось добавить {Count} новых значений FieldValues в контекст", newValuesToInsert.Count); 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<string?> values)
{ {
var newFields = fieldsFromAihit.Where(t => !fieldsFromDB.Any(f => IsStringEqual(f.AihitName, t))).ToList(); var newFields = fieldsFromAihit.Where(t => !fieldsFromDB.Any(f => IsStringEqual(f.AihitName, t))).ToList();
// Если нет новых полей, выходим БЕЗ вызова CommitAsync
if (!newFields.Any()) if (!newFields.Any())
{ {
logger.LogDebug("Нет новых полей для добавления в базу данных"); logger.LogDebug("Нет новых полей для добавления в базу данных");
@@ -335,18 +341,22 @@ private async Task SyncValuesAsync(List<string?> values)
EsppName = null, EsppName = null,
}; };
// Только добавляем в контекст, НЕ коммитим
if (!await unitFieldRepository.CreateAsync(field)) if (!await unitFieldRepository.CreateAsync(field))
{ {
logger.LogError("Не удалось добавить поле в контекст: {FieldName}", item); logger.LogError("Не удалось добавить поле в контекст: {FieldName}", item);
continue;
}
// Коммит выполняется ТОЛЬКО после успешного добавления конкретного поля
if (!await unitFieldRepository.CommitAsync())
{
logger.LogError("Не удалось сохранить поле в базу данных: {FieldName}", item);
} }
else else
{ {
logger.LogDebug("Подготовлено поле для сохранения: {FieldName}", item); logger.LogDebug("Успешно сохранено поле: {FieldName}", item);
} }
} } }
}
private bool IsStringEqual(string? value1, string? value2) private bool IsStringEqual(string? value1, string? value2)
{ {

View File

@@ -7,7 +7,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.17" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -1,18 +1,14 @@
{ {
"Logging": { "ConnectionStrings": {
"LogLevel": { "RedisConnection": "10.99.253.216:6379,password=ParrP@ssPtk202MMdevDvs"
"Default": "Debug",
"Microsoft.EntityFrameworkCore": "Debug",
"Microsoft.EntityFrameworkCore.Database.Command": "Warning",
"Microsoft.AspNetCore": "Warning"
}
}, },
"Serilog": { "Serilog": {
"MinimumLevel": { "MinimumLevel": {
"Default": "Debug", "Default": "Debug",
"Override": { "Override": {
//"Microsoft": "Information", "Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information" "Microsoft.Hosting.Lifetime": "Debug",
"PARR.DAL": "Information"
} }
}, },
"WriteTo": [ "WriteTo": [

View File

@@ -1,6 +1,7 @@
{ {
"ConnectionStrings": { "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": { "Logging": {
"LogLevel": { "LogLevel": {