/// <summary> /// テンプレート情報を更新する /// </summary> /// <param name="data">更新情報</param> /// <param name="isNew">true:新規、false:更新</param> /// <remarks>新規のケースもあるのでdelete → insertで処理を行う</remarks> internal void Update(TemplateData data, bool isNew) { using (var database = new MyLogDatabase(Constants.DatabaseFile())) { try { database.Open(); database.BeginTrans(); var headerEntity = new TemplateEntity(database); var detailEntity = new TemplateDetailEntity(database); // テンプレート情報(ヘッダ) headerEntity.Set(data); long id = data.Id; if (isNew) { id = headerEntity.Insert(); } else { headerEntity.Update(); } // テンプレート情報(明細) if (!isNew) { detailEntity.DeleteByTemplateId(id); } foreach (var detail in data.LogList) { if (detail.IsCategory) { continue; } detailEntity.Set(detail, id); detailEntity.Insert(); } database.CommitTrans(); } catch (Exception ex) { database.RollbackTrans(); throw ex; } } }