Example #1
0
        public void Delete(object obj)
        {
            if (obj == null)
            {
                return;
            }

            var deleteSql = ClassConfigContainer.FindDeleteSql1(obj.GetType());

            try
            {
                Command.Start();

                var propertyParameters =
                    ParametersCreator.CreatePropertyParameters(ParameterPrefix, obj, ref deleteSql);

                var sqlParameters = ConvertPropertyParametersToSqlParameters(propertyParameters);

                var original = GetOriginal(obj);

                ExecuteNonQuery(deleteSql, sqlParameters);

                var businessBase = obj as BusinessBase;

                if (businessBase != null)
                {
                    businessBase.MarkAsDeleted();
                }

                if (Shared.IsAuditable(obj))
                {
                    string updateSql = ClassConfigContainer.FindUpdateSql1(obj.GetType());

                    propertyParameters = ParametersCreator.CreatePropertyParameters(ParameterPrefix,
                                                                                    original, ref updateSql);


                    string auditText = Auditor.AuditDelete(original, propertyParameters);

                    InsertAuditRecord(original, DbOperation.Delete, auditText);
                }

                NullifyIdProperty(obj);
            }

            catch (Exception ex)
            {
                throw CreateEasylinkException(deleteSql, ex);
            }
        }