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>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.17" />
</ItemGroup>
<ItemGroup>

View File

@@ -288,6 +288,7 @@ private async Task SyncValuesAsync(List<string?> 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<string?> 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<string?> 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<string?> 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)
{

View File

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

View File

@@ -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"
}
}

View File

@@ -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": {