public ErrorCode DeleteRow(DataModel dataModel, DataModelTransaction transaction, DebtRuleRow debtRuleRow) { debtRuleRow.AcquireReaderLock(transaction); DebtRuleMapRow[] debtRuleMaps = debtRuleRow.GetDebtRuleMapRows(); if (debtRuleRow.GetDebtClassRows().Length != 0) { return(ErrorCode.AccessDenied); } debtRuleRow.ReleaseReaderLock(transaction.TransactionId); foreach (DebtRuleMapRow debtRuleMapRow in debtRuleMaps) { debtRuleMapRow.AcquireReaderLock(transaction); if (!DataModelFilters.HasAccess(transaction, TradingSupport.UserId, debtRuleMapRow.DebtClassId, AccessRight.Write)) { return(ErrorCode.AccessDenied); } debtRuleMapRow.ReleaseReaderLock(transaction.TransactionId); } debtRuleRow.AcquireWriterLock(transaction); dataModel.DestroyDebtRule(new object[] { debtRuleRow.DebtRuleId }, debtRuleRow.RowVersion); debtRuleRow.ReleaseLock(transaction.TransactionId); return(ErrorCode.Success); }