protected override async void OnSaveExecute()
        {
            try
            {
                await _programmingLanguageRepository.SaveAsync();

                HasChanges = _programmingLanguageRepository.HasChanges();
                //   ReiseCollectionSavedEvent();
            }
            catch (Exception e)
            {
                while (e.InnerException != null)
                {
                    e = e.InnerException;
                }
                await MassegeDialogService.ShowInfoDialogAsync("Error while Saving the entities, " +
                                                               " the data will be reloaded: " + e.Message);
                await LoadAsync(Id);
            }
        }
        private async void OnRemoveExecute()
        {
            var isReference =
                await _programmingLanguageRepository.IsReferenceByFriendAsync(SelectedProgrammingLanguage.Id);

            if (isReference)
            {
                await MassegeDialogService.ShowInfoDialogAsync($"The Language {SelectedProgrammingLanguage.Name} can't be removed," +
                                                               $"as it is referenced by at least one of friend");

                return;
            }

            SelectedProgrammingLanguage.PropertyChanged -= Wrapper_PropertyChanged;
            _programmingLanguageRepository.Remove(SelectedProgrammingLanguage.Model);
            ProgrammingLanguages.Remove(SelectedProgrammingLanguage);
            SelectedProgrammingLanguage = null;
            HasChanges = _programmingLanguageRepository.HasChanges();
            ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
        }