public void OnSelectedItemViewNameChanged() { if (SelectedItem == null) { return; } ModelViewForeignKey foreignKey = SelectedItem as ModelViewForeignKey; if (foreignKey == null) { return; } //foreignKey.IsAssinging = true; foreignKey.ViewName = SelectedItemViewName; //foreignKey.IsAssinging = false; if (foreignKey.ScalarProperties == null) { foreignKey.ScalarProperties = new ObservableCollection <ModelViewProperty>(); } if (string.IsNullOrEmpty(foreignKey.ViewName)) { return; } if (foreignKey.ScalarProperties.Count > 0) { return; } ModelViewSerializable modelViewSerializable = ModelViews.FirstOrDefault(mv => mv.ViewName == foreignKey.ViewName); if (modelViewSerializable.ScalarProperties == null) { return; } modelViewSerializable.ScalarProperties.ForEach(mv => foreignKey.ScalarProperties.Add(mv.ModelViewPropertySerializableAssingTo(new ModelViewProperty()))); bool isRequired = foreignKey.ModelViewForeignKeyIsRequired(); foreach (ModelViewProperty prop in foreignKey.ScalarProperties) { prop.IsRequiredInView = prop.IsRequiredInView && isRequired; } foreignKey.IsAssinging = true; foreignKey.ForeignKeyPrefix = foreignKey.NavigationName + modelViewSerializable.ViewName; foreignKey.IsAssinging = false; foreignKey.OnModelViewForeignKeyPrefixChanged(); foreignKey.ModelViewForeignKeyUpdateForeignKeyNameChain(); }
public void OnForeignKeySelected(ModelViewForeignKey foreignKey) { if (ModelViews == null) { ModelViews = new ObservableCollection <ModelViewSerializable>(); } if (foreignKey == null) { ModelViews.Clear(); return; } if (ModelViews.Any(mv => ((mv.RootEntityFullClassName != foreignKey.NavigationEntityFullName) || (mv.RootEntityUniqueProjectName != foreignKey.NavigationEntityUniqueProjectName)))) { ModelViews.Clear(); } if (CurrentDbContext == null) { return; } if (CurrentDbContext.ModelViews == null) { return; } List <ModelViewSerializable> result = CurrentDbContext.ModelViews .Where(mv => (mv.RootEntityFullClassName == foreignKey.NavigationEntityFullName) && (mv.RootEntityUniqueProjectName == foreignKey.NavigationEntityUniqueProjectName)) .ToList(); if (result != null) { if (result.Count != ModelViews.Count) { result.ForEach(r => { if (!ModelViews.Any(mv => mv.ViewName == r.ViewName)) { ModelViews.Add(r); } }); } } }