private Column CreateColumn(Table parentTable, FieldMetadata fieldMetadata) { Column column = new Column(parentTable, fieldMetadata.FieldName); column.DataType = DataType.NVarCharMax; return column; }
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); } }