private async void OnRemoveCommand()
        {
            var isRefered = await _programmingLanguageRepository.IsReferencedByFriendAsync(SelectedProgrammingLanguage.Id);

            if (isRefered)
            {
                await MessageDialogService.ShowInfoAsync($"The Language {SelectedProgrammingLanguage.Name} " +
                                                         $"can't be removed bcoz it is refered by at least of friend");

                return;
            }

            SelectedProgrammingLanguage.PropertyChanged -= Wrapper_PropertyChanged;
            _programmingLanguageRepository.Remove(SelectedProgrammingLanguage.Model);
            ProgrammingLanguages.Remove(SelectedProgrammingLanguage);
            SelectedProgrammingLanguage = null;
            HasChanges = _programmingLanguageRepository.HasChanges();
            ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
        }
        protected override async void OnDeleteExecute()
        {
            if (await _friendRepository.HasMeetingAync(Friend.Id))
            {
                await MessageDialogService.ShowInfoAsync($"{Friend.FirstName} can't be deleted, becouse " +
                                                         $"he is part of Meeting ");

                return;
            }

            var result = await MessageDialogService.ShowOkCancelDialogAsync($"Do you realy want to delete friend {Friend.FirstName} ?", "Question");

            if (result == MessageDialogResult.OK)
            {
                _friendRepository.Remove(Friend.Model);
                await _friendRepository.SaveAsync();

                RaiseDetailDeletedEvent(Friend.Id);
            }
        }
        protected async override void OnSaveExecute()
        {
            try
            {
                await _programmingLanguageRepository.SaveAsync();

                HasChanges = _programmingLanguageRepository.HasChanges();
                RaiseCollectionSavedEvent();
            }
            catch (Exception ex)
            {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                await MessageDialogService.ShowInfoAsync($"Error while saving the entities," +
                                                         $"the data will be reloaded. Details: {ex.Message}");
                await LoadAsync(Id);
            }
        }