コード例 #1
0
        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();
        }