Esempio n. 1
0
        public void SingleIntoWorksAsExpected()
        {
            // --- Arrange
            var db = new FbDatabase(DB_CONN);

            db.BeginTransaction();
            db.Execute(@"create table ""sample"" (""Id"" int not null, ""Name"" varchar(50))");
            db.CompleteTransaction();
            db.Execute(@"insert into ""sample"" values(1, 'First')");
            db.Execute(@"insert into ""sample"" values(2, 'Second')");

            // --- Act
            var instance = new SampleRecord {
                Id = 3
            };
            var row1 = db.SingleInto(instance, @"select ""Name"" from ""sample"" where ""Id"" = 1");
            var row2 = db.SingleInto(instance, SqlExpression.CreateFrom(
                                         @"select ""Name"" from ""sample"" where ""Id"" = 1"));

            // --- Assert
            row1.Id.ShouldEqual(3);
            row1.Name.ShouldEqual("First");
            row2.Id.ShouldEqual(3);
            row2.Name.ShouldEqual("First");
        }
Esempio n. 2
0
        public async Task FetchMultipleWorksWithMapping7Sets()
        {
            // --- Arrange
            var db = new SqlDatabase(DB_CONN);
            await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null)");

            await db.ExecuteAsync("insert into sample values(1, 'First')");

            await db.ExecuteAsync("insert into sample values(2, 'Second')");

            await db.ExecuteAsync("insert into sample values(3, 'Third')");

            await db.ExecuteAsync("insert into sample values(4, 'Fourth')");

            await db.ExecuteAsync("insert into sample values(5, 'Fifth')");

            await db.ExecuteAsync("insert into sample values(6, 'Sixth')");

            await db.ExecuteAsync("insert into sample values(7, 'Seventh')");

            // --- Act
            var rows = await db.FetchMultipleAsync <SampleRecord, SampleRecord, SampleRecord, SampleRecord, SampleRecord, SampleRecord, SampleRecord, int>(
                SqlExpression.CreateFrom(
                    @"select * from sample where Id = 1
                  select * from sample where Id = 2 or Id = 3
                  select Name, Id from sample where Id >=4 and Id <= 6
                  select * from sample where Id > 6
                  select * from sample where Id = 1
                  select * from sample where Id = 2 or Id = 3
                  select Name, Id from sample where Id >=4 and Id <= 6"),
                (l1, l2, l3, l4, l5, l6, l7) => l1.Count + l2.Count + l3.Count + l4.Count + l5.Count + l6.Count + l7.Count);

            // --- Assert
            rows.ShouldEqual(13);
        }
Esempio n. 3
0
        public void FirstOrDefaultIntoWorksAsExpected()
        {
            // --- Arrange
            var db = new SqlDatabase(DB_CONN);

            db.Execute(@"create table sample(Id int not null, Name varchar(50) null)");
            db.Execute("insert into sample values(1, 'First')");
            db.Execute("insert into sample values(2, 'Second')");

            // --- Act
            var instance = new SampleRecord {
                Id = 3
            };
            var row1 = db.FirstOrDefaultInto(instance, "select Name from sample order by Id");
            var row2 = db.FirstOrDefaultInto(instance, SqlExpression.CreateFrom("select Name from sample order by Id"));
            var row3 = db.FirstOrDefaultInto(instance, "select Name from sample where Id = 3");
            var row4 = db.FirstOrDefaultInto(instance, SqlExpression.CreateFrom("select Name from sample where Id = 3"));

            // --- Assert
            row1.Id.ShouldEqual(3);
            row1.Name.ShouldEqual("First");
            row2.Id.ShouldEqual(3);
            row2.Name.ShouldEqual("First");
            row3.ShouldBeNull();
            row4.ShouldBeNull();
        }
Esempio n. 4
0
        public async Task FirstAsyncIntoWorksAsExpected()
        {
            // --- Arrange
            var db = new FbDatabase(DB_CONN);
            await db.BeginTransactionAsync();

            await db.ExecuteAsync(@"create table ""sample"" (""Id"" int not null, ""Name"" varchar(50))");

            await db.CompleteTransactionAsync();

            await db.ExecuteAsync(@"insert into ""sample"" values(1, 'First')");

            await db.ExecuteAsync(@"insert into ""sample"" values(2, 'Second')");

            // --- Act
            var instance = new SampleRecord {
                Id = 3
            };
            var row1 = await db.FirstIntoAsync(instance,
                                               @"select ""Name"" from ""sample"" order by ""Id""");

            var row2 = await db.FirstIntoAsync(instance, SqlExpression.CreateFrom(
                                                   @"select ""Name"" from ""sample"" order by ""Id"""));

            // --- Assert
            row1.Id.ShouldEqual(3);
            row1.Name.ShouldEqual("First");
            row2.Id.ShouldEqual(3);
            row2.Name.ShouldEqual("First");
        }
Esempio n. 5
0
        public void FirstOrDefaultWorksAsExpected()
        {
            // --- Arrange
            var db = new FbDatabase(DB_CONN);

            db.BeginTransaction();
            db.Execute(@"create table ""sample"" (""Id"" int not null, ""Name"" varchar(50))");
            db.CompleteTransaction();
            db.Execute(@"insert into ""sample"" values(1, 'First')");
            db.Execute(@"insert into ""sample"" values(2, 'Second')");

            // --- Act
            var row1 = db.FirstOrDefault <SampleRecord>(@"order by ""Id""");
            var row2 = db.FirstOrDefault <SampleRecord>(SqlExpression.CreateFrom(
                                                            @"select * from ""sample"" order by ""Id"""));
            var row3 = db.FirstOrDefault <SampleRecord>(@"where ""Id"" = @0", 3);
            var row4 = db.FirstOrDefault <SampleRecord>(SqlExpression.CreateFrom(
                                                            @"select * from ""sample"" where ""Id"" = @0", 3));

            // --- Assert
            row1.Id.ShouldEqual(1);
            row1.Name.ShouldEqual("First");
            row2.Id.ShouldEqual(1);
            row2.Name.ShouldEqual("First");
            row3.ShouldBeNull();
            row4.ShouldBeNull();
        }
Esempio n. 6
0
        public void FetchMultipleExpressionWorksWith4Sets()
        {
            // --- Arrange
            var db = new SqlDatabase(DB_CONN);

            db.Execute(@"create table sample(Id int not null, Name varchar(50) null)");
            db.Execute("insert into sample values(1, 'First')");
            db.Execute("insert into sample values(2, 'Second')");
            db.Execute("insert into sample values(3, 'Third')");
            db.Execute("insert into sample values(4, 'Fourth')");
            db.Execute("insert into sample values(5, 'Fifth')");
            db.Execute("insert into sample values(6, 'Sixth')");
            db.Execute("insert into sample values(7, 'Seventh')");

            // --- Act
            var rows = db.FetchMultiple <SampleRecord, SampleRecord, SampleRecord, SampleRecord>(
                SqlExpression.CreateFrom(
                    @"select * from sample where Id = 1
                  select * from sample where Id = 2 or Id = 3
                  select Name, Id from sample where Id >=4 and Id <= 6
                  select * from sample where Id > 6"));
            var set1 = rows.Item1;
            var set2 = rows.Item2;
            var set3 = rows.Item3;
            var set4 = rows.Item4;

            // --- Assert
            set1.ShouldHaveCountOf(1);
            set2.ShouldHaveCountOf(2);
            set3.ShouldHaveCountOf(3);
            set4.ShouldHaveCountOf(1);
        }
Esempio n. 7
0
        public async Task FirstOrDefaultAsyncWorksAsExpected()
        {
            // --- Arrange
            var db = new SqlDatabase(DB_CONN);
            await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null)");

            await db.ExecuteAsync("insert into sample values(1, 'First')");

            await db.ExecuteAsync("insert into sample values(2, 'Second')");

            // --- Act
            var row1 = await db.FirstOrDefaultAsync <SampleRecord>("order by Id");

            var row2 = await db.FirstOrDefaultAsync <SampleRecord>(SqlExpression.CreateFrom("select * from sample order by Id"));

            var row3 = await db.FirstOrDefaultAsync <SampleRecord>("where Id = 3");

            var row4 = await db.FirstOrDefaultAsync <SampleRecord>(SqlExpression.CreateFrom("select * from sample where Id = 3"));

            // --- Assert
            row1.Id.ShouldEqual(1);
            row1.Name.ShouldEqual("First");
            row2.Id.ShouldEqual(1);
            row2.Name.ShouldEqual("First");
            row3.ShouldBeNull();
            row4.ShouldBeNull();
        }
Esempio n. 8
0
        public void CreateFromWorks()
        {
            // --- Arrange
            const string EXPR = "select @0 from x";
            const int    ARG  = 23;

            // --- Act
            var expression = SqlExpression.CreateFrom(EXPR, new List <object> {
                ARG
            });

            // --- Assert
            expression.SqlText.ShouldEqual(EXPR);
            expression.Arguments.ShouldHaveCountOf(1);
            expression.Arguments[0].ShouldEqual(ARG);
        }
Esempio n. 9
0
        public void FetchMultipleWorksWithMapping2Sets()
        {
            // --- Arrange
            var db = new SqlDatabase(DB_CONN);

            db.Execute(@"create table sample(Id int not null, Name varchar(50) null)");
            db.Execute("insert into sample values(1, 'First')");
            db.Execute("insert into sample values(2, 'Second')");
            db.Execute("insert into sample values(3, 'Third')");

            // --- Act
            var rows = db.FetchMultiple <SampleRecord, SampleRecord, int>(SqlExpression.CreateFrom(
                                                                              @"select * from sample where Id = 1
                  select * from sample where Id > 1"), (l1, l2) => l1.Count + l2.Count);

            // --- Assert
            rows.ShouldEqual(3);
        }
Esempio n. 10
0
        public void FetchMultipleExpressionWorksWith2Sets()
        {
            // --- Arrange
            var db = new SqlDatabase(DB_CONN);

            db.Execute(@"create table sample(Id int not null, Name varchar(50) null)");
            db.Execute("insert into sample values(1, 'First')");
            db.Execute("insert into sample values(2, 'Second')");
            db.Execute("insert into sample values(3, 'Third')");

            // --- Act
            var rows = db.FetchMultiple <SampleRecord, SampleRecord>(SqlExpression.CreateFrom(
                                                                         @"select * from sample where Id = 1
                  select * from sample where Id > 1"));
            var set1 = rows.Item1;
            var set2 = rows.Item2;

            // --- Assert
            set1.ShouldHaveCountOf(1);
            set2.ShouldHaveCountOf(2);
        }
Esempio n. 11
0
        public async Task SingleIntoAsyncWorksAsExpected()
        {
            // --- Arrange
            var db = new SqlDatabase(DB_CONN);
            await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null)");

            await db.ExecuteAsync("insert into sample values(1, 'First')");

            await db.ExecuteAsync("insert into sample values(2, 'Second')");

            // --- Act
            var instance = new SampleRecord {
                Id = 3
            };
            var row1 = await db.SingleIntoAsync(instance, "select Name from sample where Id = 1");

            var row2 = await db.SingleIntoAsync(instance, SqlExpression.CreateFrom("select Name from sample where Id = 1"));

            // --- Assert
            row1.Id.ShouldEqual(3);
            row1.Name.ShouldEqual("First");
            row2.Id.ShouldEqual(3);
            row2.Name.ShouldEqual("First");
        }
Esempio n. 12
0
        public async Task FetchMultipleAsyncExpressionWorksWith3Sets()
        {
            // --- Arrange
            var db = new SqlDatabase(DB_CONN);
            await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null)");

            await db.ExecuteAsync("insert into sample values(1, 'First')");

            await db.ExecuteAsync("insert into sample values(2, 'Second')");

            await db.ExecuteAsync("insert into sample values(3, 'Third')");

            await db.ExecuteAsync("insert into sample values(4, 'Fourth')");

            await db.ExecuteAsync("insert into sample values(5, 'Fifth')");

            // --- Act
            var rows = await db.FetchMultipleAsync <SampleRecord, SampleRecord, SampleRecord>(SqlExpression.CreateFrom(
                                                                                                  @"select * from sample where Id = 1
                  select * from sample where Id = 2
                  select Name, Id from sample where Id > 2"));

            var set1 = rows.Item1;
            var set2 = rows.Item2;
            var set3 = rows.Item3;

            // --- Assert
            set1.ShouldHaveCountOf(1);
            set2.ShouldHaveCountOf(1);
            set3.ShouldHaveCountOf(3);
        }
Esempio n. 13
0
 public void ProcessParameterWithWrongIndexRaisesException()
 {
     // --- Act
     // ReSharper disable once UnusedVariable
     var result = SqlExpression.CreateFrom("@2, @0", 1, 2).SqlText;
 }