public void Delete(ProviderOrganization providerOrganization, User user) { user.CheckPermission(Permission.ProviderOrganization_Delete); CheckPossibilityToDeleteProviderOrganization(providerOrganization, user); // Удаляем все расчетные счета из организации var bankAccountList = new List <RussianBankAccount>(providerOrganization.RussianBankAccounts); foreach (var bankAccount in bankAccountList) { providerOrganization.DeleteRussianBankAccount(bankAccount); } // Удаляем организацию из всех поставщиков, где она фигурировала var providerOrganizationContractorList = new List <Contractor>(providerOrganization.Contractors); foreach (var contractor in providerOrganizationContractorList) { Provider provider = contractor.As <Provider>(); provider.RemoveContractorOrganization(providerOrganization); } // Удаляем саму организацию providerOrganizationRepository.Delete(providerOrganization); }