public Procurementschedulehead UpdateProcurementscheduleheadByPsid(Procurementschedulehead info, List<Procurementscheduledetail> detailInfos) { foreach (var detailInfo in detailInfos) { detailInfo.Psid = info.Psid; } var detailManagement = new ProcurementscheduledetailManagement(Management); var dbDetails = detailManagement.RetrieveProcurementscheduledetailListByPsid(info.Psid); try { Management.BeginTransaction(); Management.UpdateProcurementscheduleheadByPsid(info); foreach (var detail in detailInfos) { var existInfo = dbDetails.Where(p => p.Detailid == detail.Detailid).FirstOrDefault(); if (existInfo == null) { detailManagement.CreateProcurementscheduledetail(detail); } else { detailManagement.UpdateProcurementscheduledetailByDetailid(detail); } } Management.Commit(); } catch { Management.Rollback(); throw; } return info; }