Row has been modified by another user and couldn't be updated

I have BPM (Method Directive) in Epicor 10.1.600.

BO: JobEntry

Method: ChangeJobHeadProdTeamID

The user trigger its from the Job Entry screen by changing the “Prod Team” field. The BPM has a Post-Processing directive, which looks like this:
foreach (var ttJobHead_Row in ttJobHead) //ttJobHead
{

using (var txScope = IceContext.CreateDefaultTransactionScope())
{
//get the header row and update it
var jobheadrow = (from JobHead_Row in Db.JobHead.With(LockHint.UpdLock)
where JobHead_Row.Company == ttJobHead_Row.Company
&& string.Compare(JobHead_Row.JobNum, ttJobHead_Row.JobNum, true) == 0
select JobHead_Row).FirstOrDefault();

           if (jobheadrow != null)
           {
             jobheadrow.Serial_c = callContextBpmData.Character01;
             jobheadrow.Height_c = Convert.ToInt32(callContextBpmData.Number01);
             jobheadrow.Width_c = Convert.ToInt32(callContextBpmData.Number02);
             jobheadrow.PaintColor_c = callContextBpmData.Character02;
             
           } 
  
}

Db.Validate();
txScope.Complete();    

}

}

It executes successfully, and brings me back to the Job Entry screen. When I select “Save” on the Job Entry screen, I get the error:
Row has been modified by another user and couldn’t be updated.

I have tried putting this into the above code before the line “txScope.Complete();” and I still get the error:
var jobEntryBO = Ice.Assemblies.ServiceRenderer.GetService<Erp.Contracts.JobEntrySvcContract>(Db);
var currentJob = jobEntryBO.GetByID(ttJobHead_Row.JobNum);
this.dsHolder.Attach(currentJob);

close this question

Have you find this solution?