public void SelectTestWithJoins(SupportedDatabaseTypes databaseTypes, bool useSchema, string expectedSql)
        {
            using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes).CreateScope())
            {
                var dbConfig = scope.ServiceProvider.GetService <IDbConfigDatabaseTargets>();
                expectedSql = string.Format(expectedSql, dbConfig.Schema);

                var builder = dbConfig.CreateSqlBuilder();
                var select  = builder.Select();

                var sqls = new List <string>
                {
                    @select
                    .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema)
                    .From <Entity>()
                    .InnerJoin <Entity, ChildEntity>()
                    .LeftOuterJoin <ChildEntity, ChildChildEntity>()
                    .Fields <ChildEntity>(x => x.F(item => item.Description))
                    .Fields <ChildEntity>(x => x.F(item => item.Relation))
                    .Fields <Entity>(x => x.F(item => item.Name))
                    .Fields <Entity>(x => x.F(item => item.Description))
                    .Where <Entity>(x => x.WP(item => item.Id, "IdParam"))
                    .Where <Entity>(x => x.WV(item => item.Name, "Arild"))
                    .Build(),
                    @select
                    .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema)
                    .From <Entity>()
                    .Fields <ChildEntity>(x => x.F(item => item.Description))
                    .Fields <ChildEntity>(x => x.F(item => item.Relation))
                    .Fields <Entity>(x => x.F(item => item.Name))
                    .Fields <Entity>(x => x.F(item => item.Description))
                    .InnerJoin <Entity, ChildEntity>()
                    .LeftOuterJoin <ChildEntity, ChildChildEntity>()
                    .Where <Entity>(x => x.WP(item => item.Id, "IdParam"))
                    .Where <Entity>(x => x.WV(item => item.Name, "Arild"))
                    .Build(),
                    @select
                    .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema)
                    .InnerJoin <Entity, ChildEntity>()
                    .LeftOuterJoin <ChildEntity, ChildChildEntity>()
                    .Fields <ChildEntity>(x => x.F(item => item.Description))
                    .Fields <ChildEntity>(x => x.F(item => item.Relation))
                    .Fields <Entity>(x => x.F(item => item.Name))
                    .Fields <Entity>(x => x.F(item => item.Description))
                    .Where <Entity>(x => x.WP(item => item.Id, "IdParam"))
                    .Where <Entity>(x => x.WV(item => item.Name, "Arild"))
                    .Build(),
                };
                foreach (var sql in sqls)
                {
                    sql.Should().Be(expectedSql);
                }
            }
        }
        public void SelectWithIfStatementTest(bool ifStatementResult, string expectedSql)
        {
            using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider().CreateScope())
            {
                var dbConfig = scope.ServiceProvider.GetService <IDbConfigDatabaseTargets>();
                var builder  = dbConfig.CreateSqlBuilder();
                var sql      =
                    builder.Select()
                    .Fields <Entity>(x => x.F(item => item.Name))
                    .Fields <Entity>(x => x.F(item => item.Description))
                    .Where <Entity>(x => x.WP(item => item.Id, "IdParam"))
                    .WhereIf <Entity>(x => x.WV(item => item.Name, "Arild"), () => ifStatementResult)
                    .Build();

                sql.Should().Be(expectedSql);
            }
        }
예제 #3
0
        public void UpdateTestWithWhereIfTest(SupportedDatabaseTypes databaseTypes, bool ifStatementResult, string expectedSql)
        {
            using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes).CreateScope())
            {
                var dbConfig = scope.ServiceProvider.GetService <IDbConfigDatabaseTargets>();
                var builder  = dbConfig.CreateSqlBuilder();
                var update   = builder.Update <Entity>();

                var sql = update
                          .Fields(x => x.FP(f => f.Description)
                                  .FV(f => f.Name, "Arild"))
                          .Where(x => x.WP(item => item.Id, "IdParam"))
                          .WhereIf(x => x.WV(item => item.Name, "Arild", OP.DI), () => ifStatementResult)
                          .Build();

                sql.Should().Be(expectedSql);
            }
        }
        public void DeleteTest1(SupportedDatabaseTypes databaseTypes, bool useSchema, string expectedSql)
        {
            using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes).CreateScope())
            {
                var dbConfig = scope.ServiceProvider.GetService <IDbConfig>();
                expectedSql = string.Format(expectedSql, dbConfig.Schema);

                var builder = dbConfig.CreateSqlBuilder();
                var delete  = builder.Delete <Entity>();

                var sql = delete
                          .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema)
                          .Where(x => x.WP(item => item.Id, "IdParam"))
                          .Where(x => x.WV(item => item.Name, "Arild"))
                          .Build();

                sql.Should().Be(expectedSql);
            }
        }
        public void InsertTest2(SupportedDatabaseTypes databaseTypes, bool useSchema, string expectedSql)
        {
            using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes).CreateScope())
            {
                var dbConfig = scope.ServiceProvider.GetService <IDbConfigDatabaseTargets>();
                expectedSql = string.Format(expectedSql, dbConfig.Schema);

                var builder  = dbConfig.CreateSqlBuilder();
                var resolver = dbConfig.CreateParameterResolver();
                var insert   = builder.Insert <Entity>();
                var sql      = insert
                               .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema)
                               .Fields(x => x.FV(f => f.Id, resolver.WithNextSequence("seq"), true))
                               .Fields(x => x.FV(f => f.Name, "Arild"))
                               .Fields(x => x.FP(f => f.Description))
                               .Build();

                sql.Should().Be(expectedSql);
            }
        }
        public void SelectTestOneTableOnly(SupportedDatabaseTypes databaseTypes, bool useSchema, string schemaPrefixId, string expectedSql)
        {
            SqlAliasHelper.ClearAliases();

            var addDictionary = new Dictionary <string, string> {
                { "database:schemaPrefix:Id", schemaPrefixId }
            };

            using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes, addDictionary).CreateScope())
            {
                var dbConfig = scope.ServiceProvider.GetService <IDbConfigSchemaTargets>();
                expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId());

                var builder = dbConfig.CreateSqlBuilder();
                var select  = builder.Select();
                var sqls    = new List <string>
                {
                    select
                    .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema)
                    .Fields <Entity>(x => x.F(item => item.Name))
                    .Fields <Entity>(x => x.F(item => item.Description))
                    .Where <Entity>(x => x.WP(item => item.Id, "IdParam"))
                    .Where <Entity>(x => x.WV(item => item.Name, "Arild"))
                    .Build(),
                    select
                    .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema)
                    .From <Entity>()
                    .Fields <Entity>(x => x.F(item => item.Name))
                    .Fields <Entity>(x => x.F(item => item.Description))
                    .Where <Entity>(x => x.WP(item => item.Id, "IdParam"))
                    .Where <Entity>(x => x.WV(item => item.Name, "Arild"))
                    .Build()
                };
                foreach (var sql in sqls)
                {
                    sql.Should().Be(expectedSql);
                }
            }
        }
예제 #7
0
        public void UpdateTestWithWhereIfTest(SupportedDatabaseTypes databaseTypes, bool ifStatementResult, string schemaPrefixId, string expectedSql)
        {
            var addDictionary = new Dictionary <string, string> {
                { "database:schemaPrefix:Id", schemaPrefixId }
            };

            using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes, addDictionary).CreateScope())
            {
                var dbConfig = scope.ServiceProvider.GetService <IDbConfigSchemaTargets>();
                expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId());
                var builder = dbConfig.CreateSqlBuilder();
                var update  = builder.Update <Entity>();

                var sql = update
                          .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => ifStatementResult)
                          .Fields(x => x.FP(f => f.Description)
                                  .FV(f => f.Name, "Arild"))
                          .Where(x => x.WP(item => item.Id, "IdParam"))
                          .WhereIf(x => x.WV(item => item.Name, "Arild", OP.DI), () => ifStatementResult)
                          .Build();

                sql.Should().Be(expectedSql);
            }
        }
        public void InsertTest1(SupportedDatabaseTypes databaseTypes, bool useSchema, string schemaPrefixId, string expectedSql)
        {
            var addDictionary = new Dictionary <string, string> {
                { "database:schemaPrefix:Id", schemaPrefixId }
            };

            using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes, addDictionary).CreateScope())
            {
                var dbConfig = scope.ServiceProvider.GetService <IDbConfigSchemaTargets>();
                expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId());

                var builder = dbConfig.CreateSqlBuilder();
                var insert  = builder.Insert <Entity>();

                var sql = insert
                          .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema)
                          .Fields(x => x.FP(f => f.Id, "IdParam"))
                          .Fields(x => x.FV(f => f.Name, "Arild"))
                          .Fields(x => x.FP(f => f.Description))
                          .Build();

                sql.Should().Be(expectedSql);
            }
        }