Пример #1
0
    private static void RunTestCase(SqlTypeColumnTestCase testCase)
    {
        var tableGenerationScript = $"create table TestTable( FirstName {testCase.ColumnDeclaration});";
        var uniqueDbProvider      = UniqueTestingDbProvider.GetUniqueSqlConnectionProvider();

        using (uniqueDbProvider.ToSelfDeletingDisposable())
        {
            uniqueDbProvider.CreateDatabase();
            testCase.PreTestSqlScripts.ForEach(uniqueDbProvider.Execute);
            uniqueDbProvider.Execute(tableGenerationScript);

            var query      = "select * from TestTable";
            var containers = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GetDescribeResultSetContainers(
                uniqueDbProvider, query);

            var sqlColumns = containers.Select(DescribeResultSetRowToSqlColumnConverter.Convert);
            var column     = sqlColumns.First();

            column.SqlDataType.TypeName.Should().Be(testCase.ExpectedSqlType.TypeName);
            column.SqlDataType.Mantissa.Should().Be(testCase.ExpectedSqlType.Mantissa);
            column.SqlDataType.MaximumCharLength.Should().Be(testCase.ExpectedSqlType.MaximumCharLength);
            column.SqlDataType.NumericScale.Should().Be(testCase.ExpectedSqlType.NumericScale);
            column.SqlDataType.NumericPrecision.Should().Be(testCase.ExpectedSqlType.NumericPrecision);
            column.SqlDataType.TypeName.Should().Be(testCase.ExpectedSqlType.TypeName);
            column.SqlDataType.FractionalSecondsPrecision.Should()
            .Be(testCase.ExpectedSqlType.FractionalSecondsPrecision);
        }
    }
Пример #2
0
    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 FromDescribeResultSet()
    {
        var text = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GenerateClass(
            SqlConnectionProvider,
            SqlSelectFromPoDetail,
            PoDetailClassName);

        Console.WriteLine(text);
    }
Пример #4
0
    public void CreateClassForDocumentTableFromQueryTest()
    {
        var cSharpClass = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GenerateClass(
            SqlConnectionProviders.AdventureWorksDb,
            $"SELECT * from Production.Document", "Document");
        var compileResult = RoslynHelper.TryCompile(cSharpClass);

        compileResult.IsValid().Should().BeTrue();
        Console.WriteLine(cSharpClass);
    }
Пример #5
0
    public void CreateClassFromQueryTest()
    {
        var cSharpClass = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GenerateClass(
            SqlConnectionProviders.AdventureWorksDb,
            $"SELECT * from {TableName}", "Employee");
        var compileResult = RoslynHelper.TryCompile(cSharpClass);

        compileResult.IsValid().Should().BeTrue();
        Console.WriteLine(cSharpClass);
        cSharpClass.Should().Be(EmployeeCSharpClassText);
    }
Пример #6
0
    public void CreateClassFromSqlForActualUseWhenNeedingToGenerateCSharpClasses()
    {
        var sql         = @"
select im.PbsiItemNumber, im.EpicorItemNumber, i.StockWeight, i.ItemDescription, i.ItemDescription2, i.ItemDescription3
    from ItemMaps im
  join Items i on im.PbsiItemNumber = i.ItemNumber
";
        var cSharpClass = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GenerateClass(SqlConnectionProviders.PbsiDatabase, sql, "TruckOrderRecordDto");

        Console.WriteLine(cSharpClass);
    }
Пример #7
0
    public void CreateManyRandomClassesFromDescribeResultSet()
    {
        string outputText = String.Empty;
        var    randomSqlTableReferences = RandomTableSelector.GetRandomSqlTableReferences(SqlConnectionProviders.AdventureWorksDb, 400).OrderBy(x => x.SchemaName).ThenBy(x => x.TableName);

        foreach (var sqlTableReference in randomSqlTableReferences)
        {
            var sqlTable    = SqlTableFactory.Create(sqlTableReference);
            var cSharpClass = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GenerateClass(
                sqlTableReference.SqlConnectionProvider, $"SELECT * FROM {sqlTable.Schema}.{sqlTable.Name}", sqlTable.Name);
            outputText += cSharpClass + "\r\n";
        }
        Console.WriteLine(outputText);
    }
 public static string GenerateClassFromQuery(this ISqlConnectionProvider sqlConnectionProvider, string sqlQuery,
                                             string className)
 {
     return(CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GenerateClass(
                sqlConnectionProvider, sqlQuery, className));
 }