作为上面的标题,我想获取在事务范围内插入的最新插入的行
在标题行和明细行中提供了一些在标题中划分的类别的情况
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();
}
}
我收到此错误:
违反主键约束
经过调试,我无法从上下文中获得最新的主键,它总是获得在作用域之前插入的最新主键之前的最后一行
因此,如果在作用域开始之前,最新的no_series是100000012,则每次循环内它总是得到的数字100000012
换句话说,变量no_series始终为100000013