C# Transaction 事务处理

using (var db = GetDbContext())
{
using (var trans = db.Database.BeginTransaction())
{
int i = 1;

var RecordId = findings.Select(p => p.RecordId).Distinct().FirstOrDefault();
var allFindings = db.A_Findings.Where(p => p.RecordId == RecordId).ToList();
foreach (var finding in findings)
{
finding.CreateBy = user.Name;
finding.CreateTime = DateTime.Now;
finding.ItemNo = i;
//finding.Order = TPMOrder;
finding.Picture = finding.FileName;
i++;
if (finding.Id.ToString().Equals("00000000-0000-0000-0000-000000000000"))
{
finding.Id = Guid.NewGuid();
db.A_Findings.Add(finding);
}
else
{
allFindings.Remove(allFindings.Find(p => p.Id == finding.Id));
var f = db.A_Findings.Find(finding.Id);
f.ItemNo = finding.ItemNo;
f.Description = finding.Description;
//db.A_Findings.Add(f);
}
}
foreach (var f in allFindings)
{
db.A_Findings.Remove(f);
}
//db.A_Findings.Remove();
try
{
db.SaveChanges();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
Logger.Error("SaveFinding Error:", ex);
result.Errors.Add("SaveFinding Error:" + ex.Message);
}
}
}

posted @ 2020-07-17 11:01  德平Zeng  阅读(487)  评论(0编辑  收藏  举报