public void EnsureCreateClass_FromSqlTableReference_AndFromQuery_ProduceEquivalentResults() { string classFromQuery = string.Empty, classFromTable = string.Empty; "Given a C# class generated from a query" ._(() => { var query = string.Format("select * from {0}", TableName); classFromQuery = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet .GenerateClass(SqlConnectionProviders.AdventureWorksDb, query, "Employee"); var compileResults = RoslynHelper.TryCompile(classFromQuery); compileResults.IsValid().Should().BeTrue(); }); "Given a C# class generated from SQL InformationSchema metadata" ._(() => { var sqlTableReference = new SqlTableReference(SqlConnectionProviders.AdventureWorksDb, TableName); classFromTable = CSharpClassGeneratorFromInformationSchema.CreateCSharpClass(sqlTableReference); var compileResults = RoslynHelper.TryCompile(classFromTable); compileResults.IsValid().Should().BeTrue(); }); "They should produce identical output" ._(() => { Console.WriteLine("From Query:\r\n" + classFromQuery); Console.WriteLine("From Table:\r\n" + classFromTable); classFromTable.Should().BeEquivalentTo(classFromQuery); }); }
public void CreateClassFromSqlTableReference() { var sqlTableReference = new SqlTableReference(SqlConnectionProviders.AdventureWorksDb, TableName); var cSharpClass = CSharpClassGeneratorFromInformationSchema.CreateCSharpClass(sqlTableReference); var compileResult = RoslynHelper.TryCompile(cSharpClass); compileResult.IsValid().Should().BeTrue(); Console.WriteLine(cSharpClass); }
private static async Task GeneratePbsiDatabaseTypes(StaticSqlConnectionProvider scp, bool includeAttributes, bool includeTemporalColumns) { var generatorOptions = new CSharpClassTextGeneratorOptions() { IncludePropertyAnnotationAttributes = includeAttributes }; var tableDefinitions = await InformationSchemaMetadataExplorer.GetInformationSchemaTableDefinitions(scp); foreach (var tableDefinition in tableDefinitions) { if (string.Equals(tableDefinition.InformationSchemaTable.TABLE_SCHEMA, "PbsiSf", StringComparison.CurrentCultureIgnoreCase)) { continue; } var columns = tableDefinition.InformationSchemaColumns; if (!includeTemporalColumns) { columns = columns.Where(z => !z.COLUMN_NAME.InsensitiveEquals("validto") && !z.COLUMN_NAME.InsensitiveEquals("validfrom") ) .ToList(); } var tableName = tableDefinition.InformationSchemaTable.TABLE_NAME .Replace(".", "") .Replace("$", "_"); if (tableName.EndsWith("_History", StringComparison.OrdinalIgnoreCase)) { continue; } var cSharpClass = CSharpClassGeneratorFromInformationSchema.CreateCSharpClass( columns, tableName, generatorOptions ); Console.WriteLine(cSharpClass); } }
public void FromInformationSchema() { var text = CSharpClassGeneratorFromInformationSchema.CreateCSharpClass(SqlTableReference); Console.WriteLine(text); }