示例#1
0
 private Column CreateColumn(Table parentTable, FieldMetadata fieldMetadata)
 {
     Column column = new Column(parentTable, fieldMetadata.FieldName);
     column.DataType = DataType.NVarCharMax;
     return column;
 }
示例#2
0
        private void btnCreate_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder();
                bldr.DataSource = cmbbxSqlServer.SelectedValue.ToString();
                bldr.InitialCatalog = cmbbxDatabase.SelectedItem.ToString();
                bldr.IntegratedSecurity = true;
                bldr.MultipleActiveResultSets = true;

                using (SqlConnection connection = new SqlConnection(bldr.ConnectionString))
                {
                    SqlCommand cmd = connection.CreateCommand();
                    cmd.CommandText = "SELECT * FROM " + cmbbxTables.SelectedItem.ToString();

                    //
                    //  схема столбцов выбранной таблицы
                    //
                    connection.Open();
                    DataTable schema = null;
                    using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly))
                    {
                        schema = reader.GetSchemaTable();
                    }

                    //
                    //  создаем модуль в СУ
                    //
                    using (MetadataManager manager = new MetadataManager())
                    {
                        ModuleMetadata metadata = new ModuleMetadata();
                        metadata.ModuleName = txbxModuleName.Text;

                        foreach (DataRow column in schema.Rows)
                        {
                            FieldMetadata f = new FieldMetadata();
                            f.FieldName = (string)column[0];            //  название столбца
                            f.ClrType = ((Type)column[12]).FullName;    //  тип в Clr

                            if (IsExist(f.FieldName))
                            {
                                throw new InvalidOperationException("Поле '" + f.FieldName + "' уже существует.");
                            }

                            f.Description = GetFieldDescription(f.FieldName, connection);

                            metadata.MetadataFields.Add(f);
                        }

                        manager.CreateModule(metadata);

                        //  если все прошло удачно
                        MessageBox.Show("Готово.", "Операция завершена успешно", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.InnerException != null ? ex.InnerException.Message : ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }