protected override void Execute(CodeActivityContext context) { IWorkflowContext workflowContext = context.GetExtension <IWorkflowContext>(); var repo = new FileMappingInfoRepository(workflowContext.DbContext); var entity = this.Entity.Get(context); if (entity != null) { repo.Delete(entity); } else { ParameterStack pstack = context.GetValue <ParameterStack>(this.Parameter); var targetEntityKey = this.ParameterTargetKey.Get(context); entity = pstack.GetValue(targetEntityKey, true) as FileMappingInfo; if (entity != null) { repo.Delete(entity); } } }
/// <summary> /// LLD-03-05-01:01-02-01 /// </summary> /// <param name="item"></param> /// <param name="workspace"></param> private void file_remove_acl(AppDbContext dbc, FileUpdateQueueItem item, Workspace workspace) { var aclfileLocalPath_Remove = workspace.TrimWorekspacePath(item.Target.FullName, false); var vrPath_Remove = Path.Combine(Path.GetDirectoryName(aclfileLocalPath_Remove), Path.GetFileNameWithoutExtension(aclfileLocalPath_Remove)); // 1. 削除したファイルパスと一致するファイルマッピング情報を取得する var repo = new FileMappingInfoRepository(dbc); var fmi = repo.LoadByPath(vrPath_Remove); // 2. ファイルマッピング情報から、物理空間のファイルを特定する var phyFilePath = Path.Combine(workspace.PhysicalSpacePath, vrPath_Remove); // 3. 物理空間のファイルを削除する File.Delete(phyFilePath); // 4. ファイルマッピング情報をデータベースから削除する repo.Delete(fmi); dbc.SaveChanges(); }