Пример #1
0
        public override void OnBeforeDelete(IDeleteRequestHandler handler)
        {
            if (ReferenceEquals(null, Target) ||
                (Target.Flags & FieldFlags.Updatable) != FieldFlags.Updatable)
                return;

            if (!attr.ForceCascadeDelete && ServiceQueryHelper.UseSoftDelete(handler.Row))
                return;

            var row = rowFactory();
            var rowIdField = (Field)((row as IIdRow).IdField);

            var deleteHandler = deleteHandlerFactory();
            var deleteList = new List<object>();
            new SqlQuery()
                    .Dialect(handler.Connection.GetDialect())
                    .From(row)
                    .Select((Field)rowIdField)
                    .Where(
                            foreignKeyField == new ValueCriteria(masterKeyField.AsObject(handler.Row)) &
                            queryCriteria)
                    .ForEach(handler.Connection, () =>
                    {
                        deleteList.Add(rowIdField.AsObject(row));
                    });

            foreach (var id in deleteList)
                DeleteDetail(handler.UnitOfWork, id);
        }
Пример #2
0
        public override void OnBeforeDelete(IDeleteRequestHandler handler)
        {
            if (ServiceQueryHelper.UseSoftDelete(handler.Row))
            {
                return;
            }

            var idField  = (Field)((handler.Row as IIdRow).IdField);
            var localRow = localRowFactory();

            var deleteList = new List <object>();

            new SqlQuery()
            .Dialect(handler.Connection.GetDialect())
            .From(localRow)
            .Select(localRowIdField)
            .Where(
                foreignKeyField == new ValueCriteria(idField.AsObject(handler.Row)))
            .ForEach(handler.Connection, () =>
            {
                deleteList.Add(localRowIdField.AsObject(localRow));
            });

            foreach (var localId in deleteList)
            {
                DeleteLocalRow(handler.UnitOfWork, localId);
            }
        }
        public override void OnAfterDelete(IDeleteRequestHandler handler)
        {
            if (ServiceQueryHelper.UseSoftDelete(handler.Row))
            {
                return;
            }

            var field        = (StringField)Target;
            var oldFilesJSON = field[handler.Row].TrimToNull();
            var oldFileList  = ParseAndValidate(oldFilesJSON, "oldFiles");

            var filesToDelete = new FilesToDelete();

            UploadHelper.RegisterFilesToDelete(handler.UnitOfWork, filesToDelete);

            foreach (var file in oldFileList)
            {
                DeleteOldFile(filesToDelete, file.Filename);
            }
        }
        public override void OnBeforeDelete(IDeleteRequestHandler handler)
        {
            if (Target is null ||
                (Target.Flags & FieldFlags.Updatable) != FieldFlags.Updatable)
            {
                return;
            }

            if (!attr.ForceCascadeDelete && ServiceQueryHelper.UseSoftDelete(handler.Row))
            {
                return;
            }

            var idField    = handler.Row.IdField;
            var masterId   = idField.AsObject(handler.Row);
            var row        = rowFactory();
            var rowIdField = row.IdField;

            var deleteList = new List <object>();

            new SqlQuery()
            .Dialect(handler.Connection.GetDialect())
            .From(row)
            .Select(rowIdField)
            .Where(
                thisKeyField == new ValueCriteria(masterId) &
                queryCriteria)
            .ForEach(handler.Connection, () =>
            {
                deleteList.Add(rowIdField.AsObject(row));
            });

            foreach (var id in deleteList)
            {
                DeleteDetail(handler.UnitOfWork, id);
            }
        }