Beispiel #1
0
        /// <summary>
        /// 指定されたIDのデータを削除する。
        /// まずDBのレコードを削除して、その後オブジェクトストレージから上記のデータを削除する。
        /// コミットは行わないので、呼び出し側で実行すること。(基本的には結果に関わらずコミットする)
        /// </summary>
        /// <param name="dataId">データID</param>
        public async Task <bool> DeleteDataAsync(long dataId)
        {
            var dataSetRepository = CommonDiLogic.DynamicDi <IDataSetRepository>();

            // データセットエントリを削除
            dataSetRepository.RemoveDataFromDataSet(dataId);

            // データとファイルを削除
            var data = await dataRepository.GetDataIncludeAllAsync(dataId);

            dataRepository.DeleteData(data);

            foreach (var file in data.DataProperties)
            {
                if (file.DataFile != null)
                {
                    await storageLogic.AddFileToDeleteListAsync(ResourceType.Data, file.DataFile.StoredPath);
                }
            }

            // タグマップを削除
            tagLogic.Delete(dataId);

            // オブジェクトストレージからファイルを削除
            return(await storageLogic.DeleteFilesInDeleteListAsync());
        }