Microsoft.Research.DataOnboarding.DataAccessService.Providers.EntityFramework.FileRepository.DeleteFile C# (CSharp) Méthode

DeleteFile() public méthode

Method to delete the file metadata fields data for the mentioned file id.
public DeleteFile ( int fileId, string status, bool isFileData = false, bool isHardDelete = true ) : bool
fileId int File id.
status string
isFileData bool Deleting only file related data.
isHardDelete bool
Résultat bool
        public bool DeleteFile(int fileId, string status, bool isFileData = false, bool isHardDelete = true)
        {
            bool result = false;
            if (isFileData)
            {
                var fileMetadataFields = Context.FileMetadataFields.Where(fileMeta => fileMeta.FileId == fileId);

                foreach (var fileMetadataField in fileMetadataFields)
                {
                    Context.SetEntityState<FileMetadataField>(fileMetadataField, EntityState.Deleted);
                    Context.FileMetadataFields.Remove(fileMetadataField);
                }

                if (status.Equals(FileStatus.Posted.ToString(), StringComparison.InvariantCulture))
                {
                    var fileColumns = Context.FileColumns.Where(fileCol => fileCol.FileId == fileId);

                    foreach (var fileColumn in fileColumns)
                    {
                        Context.SetEntityState<FileColumn>(fileColumn, EntityState.Deleted);
                        Context.FileColumns.Remove(fileColumn);
                    }

                    // Deleting quality check data
                    var fileQualityChecks = Context.FileQualityChecks.Where(filQc => filQc.FileId == fileId);

                    foreach (var fileQC in fileQualityChecks)
                    {
                        Context.SetEntityState<FileQualityCheck>(fileQC, EntityState.Deleted);
                        Context.FileQualityChecks.Remove(fileQC);
                    }
                }

                result = true;
            }
            else if (isHardDelete)
            {
                var fileAttributesToDelete = Context.FileAttributes.Where(file => file.FileId == fileId).ToList();
                fileAttributesToDelete.ForEach(fa =>
                {
                    Context.SetEntityState<FileAttribute>(fa, EntityState.Deleted);
                    Context.FileAttributes.Remove(fa);
                });

                var fileColumnsToDelete = Context.FileColumns.Where(file => file.FileId == fileId).ToList();
                fileColumnsToDelete.ForEach(fc =>
                {
                    Context.SetEntityState<FileColumn>(fc, EntityState.Deleted);
                    Context.FileColumns.Remove(fc);
                });

                var fileMetadataFieldsToDelete = Context.FileMetadataFields.Where(file => file.FileId == fileId).ToList();
                fileMetadataFieldsToDelete.ForEach(fmf =>
                {
                    Context.SetEntityState<FileMetadataField>(fmf, EntityState.Deleted);
                    Context.FileMetadataFields.Remove(fmf);
                });

                var fileQualityChecksToDelete = Context.FileQualityChecks.Where(file => file.FileId == fileId).ToList();
                fileQualityChecksToDelete.ForEach(fqc =>
                {
                    Context.SetEntityState<FileQualityCheck>(fqc, EntityState.Deleted);
                    Context.FileQualityChecks.Remove(fqc);
                });

                var fileToDel = Context.Files.Where(file => file.FileId == fileId).FirstOrDefault();
                Context.SetEntityState<File>(fileToDel, EntityState.Deleted);
                Context.Files.Remove(fileToDel);
                result = true;
            }

            return result;
        }

Usage Example

        public void Remove_Mentioned_File_Permenently_Test()
        {
            IFileRepository repository = new FileRepository(testDBContext);

            var result = repository.DeleteFile(1, "Posted");

            testDBContext.Commit();

            Assert.IsNotNull(result);

            int userId = 1;
            string postStatus = FileStatus.Posted.ToString();
            Func<File, bool> filter = file => file.CreatedBy == userId && (file.Status.Equals(postStatus, StringComparison.InvariantCulture) || file.isDeleted == null || file.isDeleted == false);
            var fileList = repository.GetFiles(filter);

            Assert.AreEqual(fileList.Count(), 1);

            Assert.AreEqual(fileList.ToList()[0].FileId, 2);

            Assert.AreEqual(fileList.ToList()[0].Name, "Document Two");
        }