Сгенерированный первичный ключ на транзакции - PullRequest
0 голосов
/ 13 июня 2019

Как и в заголовке выше, я хочу получить последнюю вставленную строку, которая была вставлена ​​в область транзакции

Случай, где есть строка заголовка и строка сведений, которая предоставляет некоторые категории, разделенные в заголовке

using (var scope = new TransactionScope())
{
    // some header processing
    foreach (var objHD in header_object)
    {
        var headerNo = context.Header.AsNoTracking()
                              .Select(s => s.HeaderNo).Max();

        if (string.IsNullOrEmpty(headerNo))
        {
            headerNo = "HEADER - 10000001";
        }
        else 
        {
            int no_series = Convert.ToInt32(headerNo.Replace("Header - ", ""));
            no_series = no_series  + 1;
            headerNo = "HEADER - " + no_series;
        }

        objHD.Header_No = headerNo;

        // some header processing
        context. Header.Add(objHD);

        // some detail row processing 
        context.SaveChanges();
        scope.Complete();
        scope.Dispose();
    }
}  

Я получаю эту ошибку:

Нарушение ограничения PRIMARY KEY

При отладке я не могу получить последний первичный ключ, вставленный изв контексте, он всегда получает последнюю строку перед последней, которая была вставлена ​​перед областью действия

Так что, если последний no_series ДО начала области действия, процесс равен 100000012, это всегда то же самое число 100000012, которое я получаю всякий раз, когда он входит внутрьцикл

Другими словами, переменная no_series всегда равна 100000013

...