fix(aihitMainSyncer): Добавлен commit после синхронизации новых полей и новых значений полей: раньше вызывал null ошибку при получении Id новых значений.
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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": [
|
||||||
|
|||||||
@@ -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": {
|
||||||
|
|||||||
Reference in New Issue
Block a user