private void ConnectionsCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) { this._tables.Clear(); if (this.ConnectionsCombo.SelectedItem != null) { var conn = (GeneratorConfig.Connection) this.ConnectionsCombo.SelectedItem; try { using (var connection = SqlConnections.New(conn.ConnectionString, conn.ProviderName)) { connection.Open(); foreach (var t in SqlSchemaInfo.GetTableNames(connection)) { _tables.Add(((t.Item1 != null) ? (t.Item1 + ".") : "") + t.Item2); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }
public static void DetachDb(string dbAlias) { using (var connection = SqlConnections.New(DbSettings.Current.ServerConnectionString, DbSettings.Current.Provider)) { SqlConnection.ClearAllPools(); try { SqlHelper.ExecuteNonQuery(connection, String.Format( "if db_id('{0}') is not null\n" + "BEGIN\n" + "ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;" + "EXEC sp_detach_db '{0}', 'true'\n" + "END\n", dbAlias)); } catch (SqlException ex) { if (ex.ErrorCode == -2146232060) // physical database file doesn't exist (manually deleted?) { SqlHelper.ExecuteNonQuery(connection, String.Format( "DROP DATABASE [{0}]", dbAlias)); } else { throw; } } } }
private void GenerateRowCode() { if (this.ConnectionsCombo.SelectedItem != null && this.TablesCombo.SelectedItem != null && !EntitySingular.IsTrimmedEmpty()) { string table = (string)this.TablesCombo.SelectedItem; string tableSchema = null; if (table.IndexOf('.') > 0) { tableSchema = table.Substring(0, table.IndexOf('.')); table = table.Substring(table.IndexOf('.') + 1); } try { var conn = (GeneratorConfig.Connection) this.ConnectionsCombo.SelectedItem; using (var connection = SqlConnections.New(conn.ConnectionString, conn.ProviderName)) { connection.Open(); this.GeneratedCode.Text = RowGenerator.Generate(connection, tableSchema, table, Module, ConnectionKey, EntitySingular, Permission, config); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }
public static void AttachDb(string dbAlias, string mdfFilePath) { using (var connection = SqlConnections.New(DbSettings.Current.ServerConnectionString, DbSettings.Current.Provider)) { var dbFile = Path.ChangeExtension(mdfFilePath, null); var sql = String.Format( "CREATE DATABASE [{0}] ON (FILENAME = '{1}.mdf'), (FILENAME = '{1}.ldf') FOR ATTACH;", dbAlias, dbFile); SqlHelper.ExecuteNonQuery(connection, sql); } }
public static void RenameDb(string oldAlias, string newAlias) { using (var connection = SqlConnections.New(DbSettings.Current.ServerConnectionString, DbSettings.Current.Provider)) { SqlConnection.ClearAllPools(); SqlHelper.ExecuteNonQuery(connection, String.Format( "if db_id('{0}') is not null\n" + "BEGIN\n" + "ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;" + "ALTER DATABASE [{0}] MODIFY NAME = {1};" + "ALTER DATABASE [{0}] SET MULTI_USER;" + "END\n", oldAlias, newAlias)); } }
private IDbConnection CreateConnection(string connStr) { string provider = "System.Data.SqlClient"; SqlSchemaInfo.Dialect = SqlDialect.MsSql; var idx = connStr.IndexOf("||"); if (idx >= 0) { provider = connStr.Substring(idx + 2).Trim(); connStr = connStr.Substring(0, idx).Trim(); if (provider == "System.Data.SQLite") { SqlSchemaInfo.Dialect = SqlDialect.Sqlite; } } return(SqlConnections.New(connStr, provider)); }
public static void CreateDb(string dbAlias, string mdfFilePath, string script) { Directory.CreateDirectory(Path.GetDirectoryName(mdfFilePath)); using (var connection = SqlConnections.New(DbSettings.Current.ServerConnectionString, DbSettings.Current.Provider)) { string createScript; using (var stream = typeof(DbManager).Assembly .GetManifestResourceStream("Serenity.Testing.SqlScript.CreateDatabase.sql")) { using (var sr = new StreamReader(stream)) { createScript = sr.ReadToEnd(); } } createScript = createScript.Replace("$$DbAlias$$", dbAlias).Replace("$$DbPath$$", Path.ChangeExtension(mdfFilePath, null)); RunScript(connection, createScript); } string connectionString = String.Format(DbSettings.Current.ConnectionStringFormat, dbAlias); if (!script.IsNullOrEmpty()) { try { using (var connection = SqlConnections.New(connectionString, DbSettings.Current.Provider)) { RunScript(connection, script); } } catch { DetachDb(dbAlias); DeleteDb(mdfFilePath); throw; } } }
private void GenerateCodeFor(string tableName) { EntityCodeGenerationModel rowModel; var conn = (GeneratorConfig.Connection) this.ConnectionsCombo.SelectedItem; using (var connection = SqlConnections.New(conn.ConnectionString, conn.ProviderName)) { connection.Open(); var table = tableName; string tableSchema = null; if (table.IndexOf('.') > 0) { tableSchema = table.Substring(0, table.IndexOf('.')); table = table.Substring(table.IndexOf('.') + 1); } rowModel = RowGenerator.GenerateModel(connection, tableSchema, table, Module, ConnectionKey, EntitySingular, Permission, config); new EntityCodeGenerator(rowModel, config).Run(); } }
public static void RemoveTestFiles() { HashSet <string> files = new HashSet <string>(StringComparer.OrdinalIgnoreCase); using (var connection = SqlConnections.New(DbSettings.Current.ServerConnectionString, DbSettings.Current.Provider)) using (var reader = SqlHelper.ExecuteReader(connection, "SELECT physical_name FROM sys.master_files")) { while (reader.Read()) { if (!reader.IsDBNull(0)) { files.Add(Path.GetFileName(reader.GetString(0))); } } } foreach (var file in Directory.GetFiles(DbSettings.Current.RootPath, "test*.*")) { if (!files.Contains(Path.GetFileName(file))) { TemporaryFileHelper.TryDelete(file); } } }
private IDbConnection GetConnection() { return(SqlConnections.New(connectionString, providerName)); }
/// <summary> /// Automatically creates a database for the template if it doesn't already exists. /// You might delete this method to disable auto create functionality. /// </summary> private static void EnsureDatabase(string databaseKey) { var cs = SqlConnections.GetConnectionString(databaseKey); var serverType = cs.Dialect.ServerType; bool isSql = serverType.StartsWith("SqlServer", StringComparison.OrdinalIgnoreCase); bool isPostgres = serverType.StartsWith("Postgres", StringComparison.OrdinalIgnoreCase); bool isMySql = serverType.StartsWith("MySql", StringComparison.OrdinalIgnoreCase); bool isSqlite = serverType.StartsWith("Sqlite", StringComparison.OrdinalIgnoreCase); bool isFirebird = serverType.StartsWith("Firebird", StringComparison.OrdinalIgnoreCase); if (isSqlite) { var contentRoot = Serenity.Dependency.Resolve <IWebHostEnvironment>().ContentRootPath; Directory.CreateDirectory(Path.Combine(contentRoot, "App_Data")); return; } var cb = cs.ProviderFactory.CreateConnectionStringBuilder(); cb.ConnectionString = cs.ConnectionString; if (isFirebird) { if (cb.ConnectionString.IndexOf(@"localhost") < 0 && cb.ConnectionString.IndexOf(@"127.0.0.1") < 0) { return; } var database = cb["Database"] as string; if (string.IsNullOrEmpty(database)) { return; } database = Path.GetFullPath(database); if (File.Exists(database)) { return; } Directory.CreateDirectory(Path.GetDirectoryName(database)); using (var fbConnection = SqlConnections.New(cb.ConnectionString, cs.ProviderName)) { ((WrappedConnection)fbConnection).ActualConnection.GetType() .GetMethod("CreateDatabase", new Type[] { typeof(string), typeof(bool) }) .Invoke(null, new object[] { fbConnection.ConnectionString, false }); } return; } if (!isSql && !isPostgres && !isMySql) { return; } string catalogKey = "?"; foreach (var ck in new[] { "Initial Catalog", "Database", "AttachDBFilename" }) { if (cb.ContainsKey(ck)) { catalogKey = ck; break; } } var catalog = cb[catalogKey] as string; cb[catalogKey] = null; using (var serverConnection = SqlConnections.New(cb.ConnectionString, cs.ProviderName)) { try { serverConnection.Open(); } catch (SqlException ex) { if (ex.Number != -2146232060) { throw; } const string oldVer = @"\v11.0"; if (cb.ConnectionString.IndexOf(oldVer) >= 0) { throw new Exception( "You don't seem to have SQL Express LocalDB 2012 installed.\r\n\r\n" + "If you have Visual Studio 2015 (with SQL LocalDB 2014) " + "try changing '" + databaseKey + "' connection string in WEB.CONFIG to:\r\n\r\n" + cs.ConnectionString.Replace(oldVer, @"\MSSqlLocalDB") + "\r\n\r\nor:\r\n\r\n" + cs.ConnectionString.Replace(oldVer, @"\v12.0") + "';\r\n\r\n" + "You can also try another SQL server type like .\\SQLExpress."); } throw; } string databasesQuery = "SELECT * FROM sys.databases WHERE NAME = @name"; string createDatabaseQuery = @"CREATE DATABASE [{0}]"; if (isPostgres) { databasesQuery = "select * from postgres.pg_catalog.pg_database where datname = @name"; createDatabaseQuery = "CREATE DATABASE \"{0}\""; } else if (isMySql) { databasesQuery = "SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = @name"; createDatabaseQuery = "CREATE DATABASE `{0}`"; } if (serverConnection.Query(databasesQuery, new { name = catalog }).Any()) { return; } var isLocalServer = isSql && ( serverConnection.ConnectionString.IndexOf(@"(localdb)\", StringComparison.OrdinalIgnoreCase) >= 0 || serverConnection.ConnectionString.IndexOf(@".\") >= 0 || serverConnection.ConnectionString.IndexOf(@"localhost") >= 0 || serverConnection.ConnectionString.IndexOf(@"127.0.0.1") >= 0); string command; if (isLocalServer) { string baseDirectory; var hostingEnvironment = Serenity.Dependency.TryResolve <IWebHostEnvironment>(); if (hostingEnvironment != null) { baseDirectory = hostingEnvironment.ContentRootPath; } else { baseDirectory = AppDomain.CurrentDomain.BaseDirectory; } var filename = Path.Combine(Path.Combine(baseDirectory, "App_Data/".Replace('/', Path.DirectorySeparatorChar)), catalog); Directory.CreateDirectory(Path.GetDirectoryName(filename)); command = String.Format(@"CREATE DATABASE [{0}] ON PRIMARY (Name = N'{0}', FILENAME = '{1}.mdf') LOG ON (NAME = N'{0}_log', FILENAME = '{1}.ldf')", catalog, filename); if (File.Exists(filename + ".mdf")) { command += " FOR ATTACH"; } } else { command = String.Format(createDatabaseQuery, catalog); } serverConnection.Execute(command); SqlConnection.ClearAllPools(); } }
private void GenerateCodes_Click(object sender, RoutedEventArgs e) { var conn = (GeneratorConfig.Connection) this.ConnectionsCombo.SelectedItem; if (conn == null) { MessageBox.Show("A connection must be selected!"); return; } var tables = this._tables.Where(x => x.IsChecked == true); if (this.ConnectionsCombo.SelectedItem == null) { MessageBox.Show("Please select at least one table!"); return; } ; var noIdentifier = tables.FirstOrDefault(x => x.Identifier.IsTrimmedEmpty()); if (noIdentifier != null) { MessageBox.Show("Identifier for table " + noIdentifier.FullName + " is empty!"); return; } ; foreach (var table in tables) { try { EntityModel rowModel; using (var connection = SqlConnections.New(conn.ConnectionString, conn.ProviderName)) { connection.Open(); var tableName = table.FullName; string schema = null; if (tableName.IndexOf('.') > 0) { schema = tableName.Substring(0, tableName.IndexOf('.')); tableName = tableName.Substring(tableName.IndexOf('.') + 1); } rowModel = RowGenerator.GenerateModel(connection, schema, tableName, table.Module, table.ConnectionKey, table.Identifier, table.PermissionKey, config); var kdiff3Paths = new[] { config.KDiff3Path, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "KDiff3\\kdiff3.exe"), Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "KDiff3\\kdiff3.exe"), }; CodeFileHelper.Kdiff3Path = kdiff3Paths.FirstOrDefault(File.Exists); if (config.TFSIntegration) { CodeFileHelper.SetupTFSIntegration(config.TFPath); } CodeFileHelper.SetupTSCPath(config.TSCPath); var siteWebProj = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, config.WebProjectFile)); new EntityCodeGenerator(rowModel, config, siteWebProj).Run(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } if (config.GenerateService || config.GenerateUI || config.GenerateCustom) { var siteWebProj = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, config.WebProjectFile)); var siteWebPath = Path.GetDirectoryName(siteWebProj); CodeFileHelper.ExecuteTSC(Path.Combine(siteWebPath, @"Scripts\"), ""); } MessageBox.Show("Code files for the selected table is generated. Please REBUILD SOLUTION before running application, otherwise you may have script errors!"); GenerateCodeButton.IsEnabled = false; }
private void ConnectionsCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) { this._tables.Clear(); GenerateCodeButton.IsEnabled = false; if (this.ConnectionsCombo.SelectedItem != null) { var conn = (GeneratorConfig.Connection) this.ConnectionsCombo.SelectedItem; try { using (var connection = SqlConnections.New(conn.ConnectionString, conn.ProviderName)) { connection.Open(); var schemaProvider = SchemaHelper.GetSchemaProvider(connection.GetDialect().ServerType); foreach (var t in schemaProvider.GetTableNames(connection)) { var table = conn != null?conn.Tables.FirstOrDefault(x => x.Tablename == t.Tablename) : null; var identifier = (table == null || table.Identifier.IsEmptyOrNull()) ? RowGenerator.ClassNameFromTableName(t.Table) : table.Identifier; var permission = table == null ? "Administration:General" : table.PermissionKey; var connectionKey = (table != null && !table.ConnectionKey.IsEmptyOrNull()) ? table.ConnectionKey : conn.Key; var module = (table != null && table.Module != null) ? table.Module : (Inflector.Inflector.Pascalize(connectionKey) ?? "").Replace(" ", ""); var tableItem = new TableItem { IsChecked = false, ConnectionKey = conn.Key, Module = module, Identifier = identifier, PermissionKey = permission, FullName = t.Tablename }; _tables.Add(tableItem); tableItem.PropertyChanged += (s, e2) => { var t2 = conn.Tables.FirstOrDefault(x => x.Tablename == tableItem.FullName); if (t2 == null) { t2 = new GeneratorConfig.Table(); t2.Tablename = tableItem.FullName; conn.Tables.Add(t2); } t2.Identifier = tableItem.Identifier; t2.Module = tableItem.Module; t2.ConnectionKey = tableItem.ConnectionKey; t2.PermissionKey = tableItem.PermissionKey; this.config.Save(); GenerateCodeButton.IsEnabled = _tables.Any(x => x.IsChecked); }; } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }
/// <summary> /// Automatically creates a database for the template if it doesn't already exists. /// You might delete this method to disable auto create functionality. /// </summary> private static void EnsureDatabase(string databaseKey) { var cs = SqlConnections.GetConnectionString(databaseKey); var serverType = cs.Dialect.ServerType; bool isSql = serverType.StartsWith("SqlServer", StringComparison.OrdinalIgnoreCase); bool isPostgres = !isSql& serverType.StartsWith("Postgres", StringComparison.OrdinalIgnoreCase); bool isMySql = !isSql && !isPostgres && serverType.StartsWith("MySql", StringComparison.OrdinalIgnoreCase); bool isSqlite = !isSql && !isPostgres && !isMySql && serverType.StartsWith("Sqlite", StringComparison.OrdinalIgnoreCase); if (!isSql && !isPostgres && !isMySql && !isSqlite) { return; } var cb = cs.ProviderFactory.CreateConnectionStringBuilder(); cb.ConnectionString = cs.ConnectionString; string catalogKey = "?"; if (isSqlite) { catalogKey = "Data Source"; if (!cb.ContainsKey(catalogKey)) { return; } var dataFile = cb[catalogKey] as string; if (string.IsNullOrEmpty(dataFile)) { return; } dataFile = dataFile.Replace("|DataDirectory|", HostingEnvironment.MapPath("~/App_Data/")); if (File.Exists(dataFile)) { return; } Directory.CreateDirectory(Path.GetDirectoryName(dataFile)); using (var sqliteConn = SqlConnections.New(cb.ConnectionString, cs.ProviderName)) { var createFile = ((WrappedConnection)sqliteConn).ActualConnection.GetType().GetMethod("CreateFile", BindingFlags.Static); if (createFile != null) { createFile.Invoke(null, new object[] { dataFile }); } } SqlConnection.ClearAllPools(); return; } foreach (var ck in new[] { "Initial Catalog", "Database", "AttachDBFilename" }) { if (cb.ContainsKey(ck)) { catalogKey = ck; break; } } var catalog = cb[catalogKey] as string; cb[catalogKey] = null; using (var serverConnection = SqlConnections.New(cb.ConnectionString, cs.ProviderName)) { try { serverConnection.Open(); } catch (SqlException ex) { if (ex.ErrorCode != -2146232060) { throw; } const string oldVer = @"\v11.0"; if (cb.ConnectionString.IndexOf(oldVer) >= 0) { throw new Exception( "You don't seem to have SQL Express LocalDB 2012 installed.\r\n\r\n" + "If you have Visual Studio 2015 (with SQL LocalDB 2014) " + "try changing '" + databaseKey + "' connection string in WEB.CONFIG to:\r\n\r\n" + cs.ConnectionString.Replace(oldVer, @"\MSSqlLocalDB") + "\r\n\r\nor:\r\n\r\n" + cs.ConnectionString.Replace(oldVer, @"\v12.0") + "';\r\n\r\n" + "You can also try another SQL server type like .\\SQLExpress."); } throw; } string databasesQuery = "SELECT * FROM sys.databases WHERE NAME = @name"; string createDatabaseQuery = @"CREATE DATABASE [{0}]"; if (isPostgres) { databasesQuery = "select * from postgres.pg_catalog.pg_database where datname = @name"; createDatabaseQuery = "CREATE DATABASE \"{0}\""; } else if (isMySql) { databasesQuery = "SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = @name"; createDatabaseQuery = "CREATE DATABASE `{0}`"; } if (serverConnection.Query(databasesQuery, new { name = catalog }).Any()) { return; } var isLocalServer = isSql && serverConnection.ConnectionString.IndexOf(@"(localdb)\", StringComparison.OrdinalIgnoreCase) >= 0 || serverConnection.ConnectionString.IndexOf(@".\") >= 0; string command; if (isLocalServer) { var filename = Path.Combine(HostingEnvironment.MapPath("~/App_Data"), catalog); command = String.Format(@"CREATE DATABASE [{0}] ON PRIMARY (Name = N'{0}', FILENAME = '{1}.mdf') LOG ON (NAME = N'{0}_log', FILENAME = '{1}.ldf')", catalog, filename); if (File.Exists(filename + ".mdf")) { command += " FOR ATTACH"; } } else { command = String.Format(createDatabaseQuery, catalog); } serverConnection.Execute(command); SqlConnection.ClearAllPools(); } }
/// <summary> /// Automatically creates a database for the template if it doesn't already exists. /// You might delete this method to disable auto create functionality. /// </summary> private static void EnsureDatabase(string databaseKey) { var cs = SqlConnections.GetConnectionString(databaseKey); if (cs.Dialect.GetType() == typeof(OracleDialect)) { return; } var cb = cs.ProviderFactory.CreateConnectionStringBuilder(); cb.ConnectionString = cs.ConnectionString; string catalogKey = "?"; foreach (var ck in new[] { "Initial Catalog", "Database", "AttachDBFilename" }) { if (cb.ContainsKey(ck)) { catalogKey = ck; break; } } var catalog = cb[catalogKey] as string; cb[catalogKey] = null; using (var serverConnection = SqlConnections.New(cb.ConnectionString, cs.ProviderName)) { try { serverConnection.Open(); } catch (SqlException ex) { if (ex.ErrorCode != -2146232060) { throw; } const string oldVer = @"\v11.0"; if (cb.ConnectionString.IndexOf(oldVer) >= 0) { throw new Exception( "You don't seem to have SQL Express LocalDB 2012 installed.\r\n\r\n" + "If you have Visual Studio 2015 (with SQL LocalDB 2014) " + "try changing '" + databaseKey + "' connection string in WEB.CONFIG to:\r\n\r\n" + cs.ConnectionString.Replace(oldVer, @"\MSSqlLocalDB") + "\r\n\r\nor:\r\n\r\n" + cs.ConnectionString.Replace(oldVer, @"\v12.0") + "';\r\n\r\n" + "You can also try another SQL server type like .\\SQLExpress."); } throw; } string databasesQuery = "SELECT * FROM sys.databases WHERE NAME = @name"; string createDatabaseQuery = @"CREATE DATABASE [{0}]"; if (String.Equals(cs.ProviderName, "npgsql", StringComparison.OrdinalIgnoreCase)) { databasesQuery = "select * from postgres.pg_catalog.pg_database where datname = @name"; createDatabaseQuery = "CREATE DATABASE \"{0}\""; } if (String.Equals(cs.ProviderName, "MySql.Data.MySqlClient", StringComparison.OrdinalIgnoreCase)) { databasesQuery = "SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = @name"; createDatabaseQuery = "CREATE DATABASE `{0}`"; } if (serverConnection.Query(databasesQuery, new { name = catalog }).Any()) { return; } var isLocalServer = serverConnection.ConnectionString.IndexOf(@"(localdb)\", StringComparison.OrdinalIgnoreCase) >= 0 || serverConnection.ConnectionString.IndexOf(@".\") >= 0; string command; if (isLocalServer) { var filename = Path.Combine(HostingEnvironment.MapPath("~/App_Data"), catalog); command = String.Format(@"CREATE DATABASE [{0}] ON PRIMARY (Name = N'{0}', FILENAME = '{1}.mdf') LOG ON (NAME = N'{0}_log', FILENAME = '{1}.ldf')", catalog, filename); if (File.Exists(filename + ".mdf")) { command += " FOR ATTACH"; } } else { command = String.Format(createDatabaseQuery, catalog); } serverConnection.Execute(command); SqlConnection.ClearAllPools(); } }
private void GenerateCodes_Click(object sender, RoutedEventArgs e) { if (this.ConnectionsCombo.SelectedItem == null || this.TablesCombo.SelectedItem == null) { MessageBox.Show("A connection string and table name must be selected!"); return; } if (EntitySingular.IsTrimmedEmpty()) { MessageBox.Show("Entity class identifier must be entered!"); return; } if (Permission.IsTrimmedEmpty()) { MessageBox.Show("Permission key must be entered!"); return; } string tableName = (string)this.TablesCombo.SelectedItem; try { EntityCodeGenerationModel rowModel; var conn = (GeneratorConfig.Connection) this.ConnectionsCombo.SelectedItem; using (var connection = SqlConnections.New(conn.ConnectionString, conn.ProviderName)) { connection.Open(); var table = (string)this.TablesCombo.SelectedItem; string tableSchema = null; if (table.IndexOf('.') > 0) { tableSchema = table.Substring(0, table.IndexOf('.')); table = table.Substring(table.IndexOf('.') + 1); } rowModel = RowGenerator.GenerateModel(connection, tableSchema, table, Module, ConnectionKey, EntitySingular, Permission, config); new EntityCodeGenerator(rowModel, config).Run(); MessageBox.Show("Code files for the selected table is generated!"); GenerateCodeButton.IsEnabled = false; } var cnn = this.ConnectionsCombo.SelectedItem as GeneratorConfig.Connection; var tableObj = cnn != null?cnn.Tables.FirstOrDefault(x => x.Tablename == tableName) : null; if (tableObj == null && cnn != null) { tableObj = new GeneratorConfig.Table(); tableObj.Tablename = tableName; cnn.Tables.Add(tableObj); } if (tableObj != null) { tableObj.Identifier = EntitySingular; tableObj.PermissionKey = Permission; tableObj.Module = Module; tableObj.ConnectionKey = ConnectionKey; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } File.WriteAllText(GetConfigurationFilePath(), JSON.StringifyIndented(config)); }
static void Main(string[] args) { var assembly = Assembly.GetAssembly(typeof(Serene.Northwind.Entities.CategoryRow)); var rowClasses = assembly.GetTypes().Where(w => w.GetCustomAttribute <TableNameAttribute>() != null); using (var connection = SqlConnections.New(@"Data Source=(LocalDb)\MSSqlLocalDB; Initial Catalog=Serene_Northwind_v1; Integrated Security=True", "System.Data.SqlClient")) { connection.Open(); var schemaProvider = SchemaHelper.GetSchemaProvider(connection.GetDialect().ServerType); foreach (var rowClass in rowClasses) { Row row = (Row)Activator.CreateInstance(rowClass); Console.WriteLine(row.Table); var tableName = row.Table; string schema = null; if (tableName.IndexOf('.') > 0) { schema = tableName.Substring(0, tableName.IndexOf('.')); tableName = tableName.Substring(tableName.IndexOf('.') + 1); } var rowFields = row.GetFields(); var dbFields = schemaProvider.GetFieldInfos(connection, schema ?? "dbo", tableName); for (int i = 0; i < row.FieldCount; i++) { Field rowfield = rowFields[i]; if (EntityFieldExtensions.IsTableField(rowfield)) { var dbField = dbFields.FirstOrDefault(f => f.FieldName == rowfield.Name); string strNull = rowfield.Flags.HasFlag(FieldFlags.NotNull) ? "NOT NULL" : "NULL"; if (dbField == null) { Console.WriteLine($"\t{rowfield.Type} {rowfield.Name} {strNull} \t\t no corresponding field in database!"); } else { string strTypeMismatch = rowfield.Type.ToString() == SchemaHelper.SqlTypeNameToFieldType(dbField.DataType, dbField.Size) ? "" : "datatype mismatch"; string strNullableMismatch = rowfield.Flags.HasFlag(FieldFlags.NotNull) == !dbField.IsNullable ? "" : "nullable mismatch"; Console.WriteLine($"\t{rowfield.Type} {rowfield.Name} {strNull}" + $"\t\t {strTypeMismatch}\t{strNullableMismatch}"); } } } Console.WriteLine(); } connection.Close(); } Console.ReadKey(); }
public void Run(string projectJson, string[] args) { var projectDir = Path.GetDirectoryName(projectJson); var outFile = args.FirstOrDefault(x => x.StartsWith("-o:"))?.Substring(3).TrimToNull(); var connectionKey = args.FirstOrDefault(x => x.StartsWith("-c:"))?.Substring(3).TrimToNull(); var table = args.FirstOrDefault(x => x.StartsWith("-t:"))?.Substring(3).TrimToNull(); var what = args.FirstOrDefault(x => x.StartsWith("-w:"))?.Substring(3).TrimToNull(); var module = args.FirstOrDefault(x => x.StartsWith("-m:"))?.Substring(3).TrimToNull(); var identifier = args.FirstOrDefault(x => x.StartsWith("-i:"))?.Substring(3).TrimToNull(); var permissionKey = args.FirstOrDefault(x => x.StartsWith("-p:"))?.Substring(3).TrimToNull(); if (identifier != null) { CodeFileHelper.Overwrite = true; } var config = GeneratorConfig.LoadFromFile(Path.Combine(projectDir, "sergen.json")); var connectionKeys = config.Connections .Where(x => !x.ConnectionString.IsEmptyOrNull()) .Select(x => x.Key).ToList(); var appSettingsFile = Path.Combine(projectDir, "appsettings.json"); AppSettingsFormat appSettings; if (File.Exists(appSettingsFile)) { appSettings = JSON.ParseTolerant <AppSettingsFormat>(File.ReadAllText(appSettingsFile).TrimToNull() ?? "{}"); } else { appSettings = new AppSettingsFormat(); } connectionKeys.AddRange(appSettings.Data.Keys); var appSettingsFile2 = Path.Combine(projectDir, "appsettings.machine.json"); if (File.Exists(appSettingsFile2)) { var appSettings2 = JSON.ParseTolerant <AppSettingsFormat>(File.ReadAllText(appSettingsFile2).TrimToNull() ?? "{}"); foreach (var pair in appSettings2.Data) { appSettings.Data[pair.Key] = pair.Value; } } connectionKeys.AddRange(appSettings.Data.Keys); connectionKeys = connectionKeys.Distinct(StringComparer.OrdinalIgnoreCase).OrderBy(x => x).ToList(); if (connectionKeys.Count == 0) { Console.Error.WriteLine("No connections in appsettings.json or sergen.json!"); Environment.Exit(1); } if (outFile == null && connectionKey == null) { Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("=== Table Code Generation ==="); Console.WriteLine(""); Console.ResetColor(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Available Connections:"); Console.ResetColor(); foreach (var x in connectionKeys) { Console.WriteLine(x); } Console.ResetColor(); Console.WriteLine(); } else if (connectionKey == null) { File.WriteAllText(outFile, JSON.Stringify(connectionKeys)); Environment.Exit(0); } string userInput = null; if (outFile == null && connectionKey == null) { userInput = connectionKeys.Count == 1 ? connectionKeys[0] : null; while (connectionKey == null || !connectionKeys.Contains(connectionKey, StringComparer.OrdinalIgnoreCase)) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Enter a Connection: ('!' to abort)"); Console.ForegroundColor = ConsoleColor.Yellow; connectionKey = Hinter.ReadHintedLine(connectionKeys, userInput: userInput); userInput = connectionKey; if (connectionKey == "!") { Console.ResetColor(); return; } } } userInput = connectionKey; connectionKey = connectionKeys.Find(x => string.Compare(x, userInput, StringComparison.OrdinalIgnoreCase) == 0); if (connectionKey == null) { Console.Error.WriteLine("Can't find connection with key: " + userInput + "!"); Environment.Exit(1); } if (outFile == null) { Console.ResetColor(); Console.WriteLine(); } var dataConnection = appSettings.Data.ContainsKey(connectionKey) ? appSettings.Data[connectionKey] : null; var confConnection = config.Connections.FirstOrDefault(x => string.Compare(x.Key, connectionKey, StringComparison.OrdinalIgnoreCase) == 0); var connectionString = dataConnection != null?dataConnection.ConnectionString.TrimToNull() : null; if (connectionString == null && confConnection != null) { connectionString = confConnection.ConnectionString.TrimToNull(); } var providerName = dataConnection != null?dataConnection.ProviderName.TrimToNull() : null; if (providerName == null && confConnection != null) { providerName = confConnection.ProviderName.TrimToNull(); } providerName = providerName ?? "System.Data.SqlClient"; DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance); DbProviderFactories.RegisterFactory("Microsoft.Data.Sqlite", Microsoft.Data.Sqlite.SqliteFactory.Instance); DbProviderFactories.RegisterFactory("Npgsql", Npgsql.NpgsqlFactory.Instance); DbProviderFactories.RegisterFactory("FirebirdSql.Data.FirebirdClient", FirebirdSql.Data.FirebirdClient.FirebirdClientFactory.Instance); DbProviderFactories.RegisterFactory("MySql.Data.MySqlClient", MySql.Data.MySqlClient.MySqlClientFactory.Instance); if (connectionString.IndexOf("../../..") >= 0) { connectionString = connectionString.Replace("../../..", Path.GetDirectoryName(projectJson)); } else if (connectionString.IndexOf(@"..\..\..\") >= 0) { connectionString = connectionString.Replace(@"..\..\..\", Path.GetDirectoryName(projectJson)); } ISchemaProvider schemaProvider; List <TableName> tableNames; using (var connection = SqlConnections.New(connectionString, providerName)) { schemaProvider = SchemaHelper.GetSchemaProvider(connection.GetDialect().ServerType); tableNames = schemaProvider.GetTableNames(connection).ToList(); } var tables = tableNames.Select(x => x.Tablename).ToList(); if (outFile == null && table == null) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Available Tables:"); Console.ResetColor(); foreach (var x in tables) { Console.WriteLine(x); } } else if (table == null) { File.WriteAllText(outFile, JSON.Stringify(tableNames.Select(x => { var xct = confConnection == null ? null : confConnection.Tables.FirstOrDefault(z => string.Compare(z.Tablename, table, StringComparison.OrdinalIgnoreCase) == 0); return(new { name = x.Tablename, module = xct == null || xct.Module.IsEmptyOrNull() ? RowGenerator.ClassNameFromTableName(connectionKey) : xct.Module, permission = xct == null || xct.PermissionKey.IsTrimmedEmpty() ? "Administration:General" : xct.PermissionKey, identifier = xct == null || xct.Identifier.IsEmptyOrNull() ? RowGenerator.ClassNameFromTableName(x.Table) : xct.Identifier, }); }))); Environment.Exit(0); } userInput = tables.Count == 1 ? tables[0] : null; if (userInput == null && schemaProvider.DefaultSchema != null && tables.Any(x => x.StartsWith(schemaProvider.DefaultSchema + "."))) { userInput = schemaProvider.DefaultSchema + "."; } if (outFile == null) { Console.WriteLine(); while (table == null || !tables.Contains(table, StringComparer.OrdinalIgnoreCase)) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Enter a Table: ('!' to abort)"); Console.ForegroundColor = ConsoleColor.Yellow; table = Hinter.ReadHintedLine(tables, userInput: userInput); userInput = table; if (table == "!") { Console.ResetColor(); return; } } } userInput = table; var tableName = tableNames.First(x => string.Compare(x.Tablename, userInput, StringComparison.OrdinalIgnoreCase) == 0); if (tableName == null) { Console.Error.WriteLine("Can't find table with name: " + userInput + "!"); Environment.Exit(1); } var confTable = confConnection == null ? null : confConnection.Tables.FirstOrDefault(x => string.Compare(x.Tablename, table, StringComparison.OrdinalIgnoreCase) == 0); if (module == null) { userInput = confTable == null || confTable.Module.IsEmptyOrNull() ? RowGenerator.ClassNameFromTableName(connectionKey) : confTable.Module; Console.WriteLine(); while (module.IsTrimmedEmpty()) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Enter a Module name for table: ('!' to abort)"); Console.ForegroundColor = ConsoleColor.Yellow; module = Hinter.ReadHintedLine(new string[0], userInput: userInput); userInput = module; if (module == "!") { Console.ResetColor(); return; } } } if (identifier == null) { userInput = confTable == null || confTable.Identifier.IsEmptyOrNull() ? RowGenerator.ClassNameFromTableName(tableName.Table) : confTable.Identifier; Console.WriteLine(); while (identifier.IsTrimmedEmpty()) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Enter a class Identifier for table: ('!' to abort)"); Console.ForegroundColor = ConsoleColor.Yellow; identifier = Hinter.ReadHintedLine(new string[0], userInput: userInput); userInput = identifier; if (identifier == "!") { Console.ResetColor(); return; } } } if (permissionKey == null) { userInput = confTable == null || confTable.PermissionKey.IsTrimmedEmpty() ? "Administration:General" : confTable.PermissionKey; Console.WriteLine(); while (permissionKey.IsTrimmedEmpty()) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Enter a Permission Key for table: ('!' to abort)"); Console.ForegroundColor = ConsoleColor.Yellow; permissionKey = Hinter.ReadHintedLine(new string[0], userInput: userInput); userInput = permissionKey; if (permissionKey == "!") { Console.ResetColor(); return; } } } if (what == null) { Console.WriteLine(); userInput = "RSU"; while (what.IsEmptyOrNull()) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Choose What to Generate (R:Row, S:Repo+Svc, U=Cols+Form+Page+Grid+Dlg+Css)"); Console.ForegroundColor = ConsoleColor.Yellow; what = Hinter.ReadHintedLine(new string[0], userInput: userInput); userInput = what; if (what == "!") { Console.ResetColor(); return; } } } config.GenerateRow = what.IndexOf("R", StringComparison.OrdinalIgnoreCase) >= 0; config.GenerateService = what.IndexOf("S", StringComparison.OrdinalIgnoreCase) >= 0; config.GenerateUI = what.IndexOf("U", StringComparison.OrdinalIgnoreCase) >= 0; Console.ResetColor(); Console.WriteLine(); if (confConnection == null) { confConnection = new GeneratorConfig.Connection { Key = connectionKey }; config.Connections.Add(confConnection); } if (confTable == null) { confTable = new GeneratorConfig.Table { Identifier = identifier, Module = module, PermissionKey = permissionKey, Tablename = tableName.Tablename }; confConnection.Tables.Add(confTable); } else { confTable.Identifier = identifier; confTable.Module = module; confTable.PermissionKey = permissionKey; } File.WriteAllText(Path.Combine(projectDir, "sergen.json"), config.SaveToJson()); using (var connection = SqlConnections.New(connectionString, providerName)) { connection.Open(); var rowModel = RowGenerator.GenerateModel(connection, tableName.Schema, tableName.Table, module, connectionKey, identifier, permissionKey, config); new EntityCodeGenerator(rowModel, config, projectJson).Run(); } }
private void ConnectionsCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) { this._tables.Clear(); GenerateCodeButton.IsEnabled = false; if (this.ConnectionsCombo.SelectedItem != null) { var conn = (GeneratorConfig.Connection) this.ConnectionsCombo.SelectedItem; try { using (var connection = SqlConnections.New(conn.ConnectionString, conn.ProviderName)) { connection.Open(); foreach (var t in SqlSchemaInfo.GetTableNames(connection)) { var table = conn != null?conn.Tables.FirstOrDefault(x => x.Tablename == t.Tablename) : null; var permission = table == null ? "Administration:General" : table.PermissionKey; var connectionKey = (table != null && !table.ConnectionKey.IsEmptyOrNull()) ? table.ConnectionKey : conn.Key; var module = (table != null && table.Module != null) ? table.Module : this.adminTables.Any(atbl => $"{config.TablePrefixSettings?.ModulePrefixes?["Administration"]}_{atbl}".Equals(t.Tablename, StringComparison.InvariantCultureIgnoreCase)) ? "Administration" : Inflector.Inflector.Capitalize(connectionKey); var identifier = (table == null || table.Identifier.IsEmptyOrNull()) ? RowGenerator.ClassNameFromTableName(RowGenerator.UnprefixTable(t.Table, module, this.config)) : table.Identifier; var tableItem = new TableItem { IsChecked = false, ConnectionKey = conn.Key, Module = module, Identifier = identifier, PermissionKey = permission, FullName = t.Tablename }; _tables.Add(tableItem); tableItem.PropertyChanged += (s, e2) => { var t2 = conn.Tables.FirstOrDefault(x => x.Tablename == tableItem.FullName); if (t2 == null) { t2 = new GeneratorConfig.Table(); t2.Tablename = tableItem.FullName; conn.Tables.Add(t2); } t2.Module = tableItem.Module; if (e2.PropertyName.Equals("Module")) { tableItem.Identifier = RowGenerator.ClassNameFromTableName(RowGenerator.UnprefixTable(t2.Tablename, t2.Module, this.config)); } t2.Identifier = tableItem.Identifier; t2.ConnectionKey = tableItem.ConnectionKey; t2.PermissionKey = tableItem.PermissionKey; this.config.Save(); GenerateCodeButton.IsEnabled = _tables.Any(x => x.IsChecked); }; } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }
public static AuditLogListResponse List(string schema, AuditLogListRequest request) { var fld = IoC.Resolve <IAuditLogRow>(schema); SecurityHelper.EnsureLoggedIn(RightErrorHandling.ThrowException); var response = new AuditLogListResponse(); using (var connection = SqlConnections.New()) { response.Entities = new List <Row>(); var row = ((Row)fld).CreateNew(); if (request.Sort == null || request.Sort.Length == 0) { request.Sort = new SortBy[] { new SortBy(fld.DateField.Name, true) } } ; var query = new SqlQuery().From(row) .Select( (Field)fld.IdField, fld.EntityTypeIdField, fld.EntityIdField, fld.ParentTypeIdField, fld.OldParentIdField, fld.NewParentIdField, fld.DateField, (Field)fld.UserIdField, fld.AuditTypeIdField, fld.OldAuditDataField, fld.NewAuditDataField) .OrderBy( (Field)fld.IdField) .ApplySkipTakeAndCount(request.Skip, request.Take, request.ExcludeTotalCount) .ApplySort(request.Sort); if (request.EntityTypeId != null && request.EntityId != null) { var pEntityId = query.AddParam(request.EntityId); var pEntityTypeId = query.AddParam(request.EntityTypeId); query.Where(~( ~( new Criteria(0, fld.EntityTypeIdField) == pEntityTypeId & new Criteria(0, fld.EntityIdField) == pEntityId) | ~( new Criteria(0, fld.ParentTypeIdField) == pEntityTypeId & ~( new Criteria(0, fld.OldParentIdField) == pEntityId | new Criteria(0, fld.NewParentIdField) == pEntityId)))); } else { if (request.EntityTypeId != null) { query.WhereEqual(fld.EntityTypeIdField, request.EntityTypeId);//Convert.ToInt32(request.EntityTypeId.Value)); } if (request.EntityId != null) { query.WhereEqual(fld.EntityIdField, request.EntityId.Value); } } response.TotalCount = query.ForEach(connection, delegate() { response.Entities.Add(row.Clone()); }); response.SetSkipTakeTotal(query); response.IdNameLookups = new Dictionary <EntityType, Dictionary <long, string> >(); response.FieldTitles = new Dictionary <EntityType, Dictionary <string, string> >(); response.ForeignEntityTypes = new Dictionary <EntityType, Dictionary <string, string> >(); response.EntityTitles = new Dictionary <EntityType, string>(); var lookups = response.IdNameLookups; var titles = response.FieldTitles; var foreigns = response.ForeignEntityTypes; var entities = response.EntityTitles; Action <EntityType, Int64> addLookup = (entityType, id) => { Dictionary <long, string> lookup; if (!lookups.TryGetValue(entityType, out lookup)) { lookup = new Dictionary <long, string>(); lookups[entityType] = lookup; } if (!lookup.ContainsKey(id)) { lookup[id] = null; } }; Action <EntityType, string> addTitle = (entityType, field) => { Dictionary <string, string> lookup; if (!titles.TryGetValue(entityType, out lookup)) { lookup = new Dictionary <string, string>(); titles[entityType] = lookup; } if (!lookup.ContainsKey(field)) { lookup[field] = null; } }; Action <EntityType> addEntity = (entityType) => { if (!entities.ContainsKey(entityType)) { //Row r; String s = null; // TODO: FIX! //if (schema.TypeToTable.TryGetValue(entityType, out r)) // s = LocalText.TryGet(1055, "Db." + r.Table + ".EntitySingular", false); s = s ?? Enum.GetName(typeof(EntityType), entityType); entities[entityType] = s; } }; Action <EntityType, string, EntityType> addForeign = (entityType, field, foreignType) => { Dictionary <string, string> foreign; if (!foreigns.TryGetValue(entityType, out foreign)) { foreign = new Dictionary <string, string>(); foreigns[entityType] = foreign; } if (!foreign.ContainsKey(field)) { foreign[field] = Enum.GetName(typeof(EntityType), foreignType); } }; foreach (var entity in response.Entities) { addEntity(fld.EntityTypeIdField[entity]); addLookup(fld.EntityTypeIdField[entity], fld.EntityIdField[entity].Value); if (fld.ParentTypeIdField[entity] != null) { addEntity(fld.ParentTypeIdField[entity]); } //if (entity.UserId != null) // addLookup(UserRow.TableName, entity.UserId.Value); Row theRow; if (((AuditType?)fld.AuditTypeIdField[entity] == AuditType.Insert || (AuditType?)fld.AuditTypeIdField[entity] == AuditType.Update) && (fld.OldAuditDataField[entity] != null || fld.NewAuditDataField[entity] != null)) { theRow = RowRegistry.GetSchemaRow(RowRegistry.DefaultSchema, fld.EntityTypeIdField[entity]); if (theRow == null) { continue; } UpdateAuditDataDictionary ud = new UpdateAuditDataDictionary(); if (fld.OldAuditDataField[entity] != null) { ud.Old = JsonConvert.DeserializeObject <Dictionary <string, object> >(fld.OldAuditDataField[entity].TrimToNull() ?? "{}", JsonSettings.Tolerant); } if (fld.NewAuditDataField[entity] != null) { ud.New = JsonConvert.DeserializeObject <Dictionary <string, object> >(fld.OldAuditDataField[entity].TrimToNull() ?? "{}", JsonSettings.Tolerant); } for (var i = 0; i < 2; i++) { var d = (i == 0) ? ud.Old : ud.New; if (d != null) { foreach (var p in d) { addTitle(fld.EntityTypeIdField[entity], p.Key); if (p.Value != null && p.Value is Int16 || p.Value is Int32 || p.Value is Int64) { var f = theRow.FindField(p.Key); if (f != null && f.ForeignTable != null) { //EntityType foreignType; //if (schema.TableToType.TryGetValue(f.ForeignTable, out foreignType)) { addForeign(fld.EntityTypeIdField[entity], p.Key, f.ForeignTable); addLookup(f.ForeignTable, Convert.ToInt64(p.Value)); } } } } } } } } foreach (var pair in response.IdNameLookups) { Row entity = RowRegistry.GetSchemaRow(RowRegistry.DefaultSchema, pair.Key); if (entity != null) { var idRow = entity as IIdRow; var nameRow = entity as INameRow; if (idRow != null && nameRow != null) { var lookup = pair.Value; var idName = GetIdNameDictionary(connection, (IIdRow)entity, ((INameRow)entity).NameField, lookup.Keys); foreach (var p in idName) { lookup[p.Key] = p.Value; } } } } foreach (var pair in response.FieldTitles) { Row entity = RowRegistry.GetSchemaRow(RowRegistry.DefaultSchema, pair.Key); if (entity != null) { var lookup = pair.Value; var keys = new string[lookup.Keys.Count]; lookup.Keys.CopyTo(keys, 0); foreach (var key in keys) { Field f; if (key.EndsWith("Id")) { var s = key.Substring(0, key.Length - 2); f = entity.FindField(s); if (f != null) { lookup[key] = f.Title; continue; } } f = entity.FindField(key); if (f != null) { lookup[key] = f.Title; } } } } return(response); } }
private void ConnectionsCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) { this._tables.Clear(); GenerateCodeButton.IsEnabled = false; if (this.ConnectionsCombo.SelectedItem != null) { var conn = (GeneratorConfig.Connection) this.ConnectionsCombo.SelectedItem; try { using (var connection = SqlConnections.New(conn.ConnectionString, conn.ProviderName)) { connection.Open(); var schemaProvider = SchemaHelper.GetSchemaProvider(connection.GetDialect().ServerType); //foreach (var t in schemaProvider.GetTableNames(connection)) List <Data.Schema.TableName> excluiTabelas = new List <Data.Schema.TableName>(); excluiTabelas.Add(new Data.Schema.TableName() { Table = "EXCEPTIONS" }); excluiTabelas.Add(new Data.Schema.TableName() { Table = "LANGUAGES" }); excluiTabelas.Add(new Data.Schema.TableName() { Table = "ROLEPERMISSIONS" }); excluiTabelas.Add(new Data.Schema.TableName() { Table = "ROLES" }); excluiTabelas.Add(new Data.Schema.TableName() { Table = "USERPERMISSIONS" }); excluiTabelas.Add(new Data.Schema.TableName() { Table = "USERPREFERENCES" }); excluiTabelas.Add(new Data.Schema.TableName() { Table = "USERROLES" }); excluiTabelas.Add(new Data.Schema.TableName() { Table = "USERS" }); excluiTabelas.Add(new Data.Schema.TableName() { Table = "VERSIONINFO" }); //foreach (var t in schemaProvider.GetTableNames(connection).Where(x => x.Table != "Exceptions")) foreach (var t in schemaProvider.GetTableNames(connection).Where(x => !excluiTabelas.Any(t => t.Table == x.Table.ToUpper()))) { //INICIO - ROLEMBERG FILHO - NÃO MOSTRA AS TABELAS PADRÃO DO SERENITY !!! //switch (t.Table.ToUpper()) //{ // case "EXCEPTIONS": // case "LANGUAGES": // case "ROLEPERMISSIONS": // case "ROLES": // case "USERPERMISSIONS": // case "USERPREFERENCES": // case "USERROLES": // case "USERS": // case "VERSIONINFO": // // TABELAS PADRÃO DO SERENITY. NÃO MOSTRA NO SERGEN!!!! // continue; // default: // break; //} //FIM - ROLEMBERG FILHO - NÃO MOSTRA AS TABELAS PADRÃO DO SERENITY !!! var table = conn != null?conn.Tables.FirstOrDefault(x => x.Tablename == t.Tablename) : null; var identifier = (table == null || table.Identifier.IsEmptyOrNull()) ? RowGenerator.ClassNameFromTableName(t.Table) : table.Identifier; var permission = table == null ? "Administration:General" : table.PermissionKey; var connectionKey = (table != null && !table.ConnectionKey.IsEmptyOrNull()) ? table.ConnectionKey : conn.Key; var module = (table != null && table.Module != null) ? table.Module : (Inflector.Inflector.Pascalize(connectionKey) ?? "").Replace(" ", ""); var tableItem = new TableItem { IsChecked = false, ConnectionKey = conn.Key, Module = module, Identifier = identifier, PermissionKey = permission, FullName = t.Tablename }; _tables.Add(tableItem); tableItem.PropertyChanged += (s, e2) => { var t2 = conn.Tables.FirstOrDefault(x => x.Tablename == tableItem.FullName); if (t2 == null) { t2 = new GeneratorConfig.Table(); t2.Tablename = tableItem.FullName; conn.Tables.Add(t2); } t2.Identifier = tableItem.Identifier; t2.Module = tableItem.Module; t2.ConnectionKey = tableItem.ConnectionKey; t2.PermissionKey = tableItem.PermissionKey; this.config.Save(); GenerateCodeButton.IsEnabled = _tables.Any(x => x.IsChecked); }; } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }