Как и в заголовке выше, я хочу получить последнюю вставленную строку, которая была вставлена в область транзакции
Случай, где есть строка заголовка и строка сведений, которая предоставляет некоторые категории, разделенные в заголовке
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