public override void RemoveDetailEntities() { if (!SelectedEntities.Any()) { return; } var entityKey = Repository.GetPrimaryKey(Entity); foreach (var selectedEntity in SelectedEntities) { var detailKey = DetailsRepository.GetPrimaryKey(selectedEntity); var junction = JunctionRepository.First(GetJunctionPredicate(entityKey, detailKey)); JunctionRepository.Remove(junction); } SaveChangesAndNotify(SelectedEntities); SelectedEntities.Clear(); }
public override void AddDetailEntities() { var availableEntities = DetailsRepository.ToList().Except(DetailEntities).ToArray(); var selectEntitiesViewModel = new SelectDetailEntitiesViewModel <TDetailEntity>(availableEntities); if (DialogService.ShowDialog(MessageButton.OKCancel, CommonResources.AddRemoveDetailEntities_SelectObjects, selectEntitiesViewModel) == MessageResult.OK && selectEntitiesViewModel.SelectedEntities.Any()) { foreach (var selectedEntity in selectEntitiesViewModel.SelectedEntities) { var junction = new TJunction(); var entityKey = Repository.GetPrimaryKey(Entity); var detailKey = DetailsRepository.GetPrimaryKey(selectedEntity); var junctionType = typeof(TJunction); junctionType.GetProperty(ExpressionHelper.GetPropertyName(getEntityForeignKey)).SetValue(junction, entityKey, null); junctionType.GetProperty(ExpressionHelper.GetPropertyName(getDetailForeignKey)).SetValue(junction, detailKey, null); JunctionRepository.Add(junction); } SaveChangesAndNotify(selectEntitiesViewModel.SelectedEntities); } }