JoeSmith3100
@JoeSmith3100
Начинающий программист C#

Как решить проблему с уникальностью ключей?

Пусть есть такой код (используемая СУБД - PostgreeSQL):
public async Task<Response> AddEntity(SurveyData data)
        {
            try
            {
                var dataSurvey = new SurveyData
                {
                    AnomalyType = data.AnomalyType,
                    Description = data.Description,
                    Values = data.Values
                };
                await _context.SurveyDatas.AddAsync(dataSurvey);
                await _context.SaveChangesAsync();
                _logger.LogInformation("(S): Response has been sent (AddEntity method)");
                return new Response
                {
                    Status = ResponseStatus.Ok
                };
            }
            catch (Exception e)
            {
                _logger.LogInformation($"\n(E): Error in AddEntity method: {e}\n");
                return new Response
                {
                    Status = ResponseStatus.InternalServerError
                };
            }
        }


По какой то причине данный код раз от раза при попытке добавления данных в БД выдаёт исключение о том, что был факт попытки добавления некорректного ("неуникального", если угодно) ключа.

В чём может быть проблема?

Также существует проблема что уже для добавленных данных подбирался id немного не по порядку:

{
    "status": 200,
    "body": [
        {
            "id": 1,
            "anomalyType": "Gravity",
            "description": "string",
            "values": [
                {
                    "id": 1,
                    "coord_X": 23.5,
                    "coord_Y": 40,
                    "value": 0.7
                }
            ]
        },
        {
            "id": 3,
            "anomalyType": "Magnetic",
            "description": "string",
            "values": [
                {
                    "id": 2,
                    "coord_X": 50,
                    "coord_Y": 100,
                    "value": 558
                },
                {
                    "id": 3,
                    "coord_X": 50,
                    "coord_Y": 150,
                    "value": 768
                }
            ]
        },
        {
            "id": 5,
            "anomalyType": "Magnetic",
            "description": "string",
            "values": [
                {
                    "id": 10,
                    "coord_X": 50,
                    "coord_Y": 100,
                    "value": 558
                },
                {
                    "id": 12,
                    "coord_X": 50,
                    "coord_Y": 150,
                    "value": 768
                }
            ]
        },
        {
            "id": 7,
            "anomalyType": "string",
            "description": "string",
            "values": [
                {
                    "id": 4,
                    "coord_X": 0,
                    "coord_Y": 0,
                    "value": 0
                }
            ]
        },
        {
            "id": 8,
            "anomalyType": "GIS_КВМ",
            "description": "55-64-43 61-56-43",
            "values": [
                {
                    "id": 5,
                    "coord_X": 0,
                    "coord_Y": 50,
                    "value": 94.1
                },
                {
                    "id": 6,
                    "coord_X": 0,
                    "coord_Y": 51,
                    "value": 93.5
                },
                {
                    "id": 7,
                    "coord_X": 0,
                    "coord_Y": 52,
                    "value": 93.2
                }
            ]
        },
        {
            "id": 9,
            "anomalyType": "ТестФронта_1",
            "description": null,
            "values": [
                {
                    "id": 8,
                    "coord_X": 0,
                    "coord_Y": 0,
                    "value": 0
                }
            ]
        },
        {
            "id": 10,
            "anomalyType": "ТестФронта_2",
            "description": null,
            "values": [
                {
                    "id": 9,
                    "coord_X": 0,
                    "coord_Y": 0,
                    "value": 0
                }
            ]
        },
        {
            "id": 12,
            "anomalyType": "ТестФронта_3",
            "description": null,
            "values": [
                {
                    "id": 11,
                    "coord_X": 0,
                    "coord_Y": 0,
                    "value": 0
                }
            ]
        },
        {
            "id": 14,
            "anomalyType": "ТестФронта_4",
            "description": "ТестФронта_4",
            "values": [
                {
                    "id": 13,
                    "coord_X": 0,
                    "coord_Y": 0,
                    "value": 0
                }
            ]
        },
        {
            "id": 17,
            "anomalyType": "ТестФронта_5",
            "description": "ТестФронта 5",
            "values": [
                {
                    "id": 14,
                    "coord_X": 0,
                    "coord_Y": 0,
                    "value": 0
                }
            ]
        }
    ]
}
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 1
@12rbah
По какой то причине данный код раз от раза при попытке добавления данных в БД выдаёт исключение о том, что был факт попытки добавления некорректного ("неуникального", если угодно) ключа.
Скоре всего одно из значений это primary key или unique, поэтому и кидает ошибку.
Также существует проблема что уже для добавленных данных подбирался id немного не по порядку:
Это фича у постгреса такая, но в целом если подумать, то это не особо и нужно, чтобы id шли по порядку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы