public void Filters_result_by_conditions(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var pageBuilder = new PageIndexPageBuilder(1, 10);
                    var entities    = database.GetPage <Dog>(pageBuilder, "Age", new { Age = 10 });

                    // Assert
                    entities.Items.Count().Should().Be(3);
                }
            }
            public async Task Counts_entities_in_alternate_schema(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert <int>(new SchemaOther {
                        Name = "Some Name"
                    });
                    database.Insert <int>(new SchemaOther {
                        Name = "Some Name"
                    });
                    database.Insert <int>(new SchemaOther {
                        Name = "Some Name"
                    });
                    database.Insert <int>(new SchemaOther {
                        Name = "Some Name"
                    });

                    // Act
                    var result = await database.CountAsync <SchemaOther>();

                    // Assert
                    result.Should().Be(4);
                }
            }
            public void Inserts_into_other_schemas(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    var entities = new[]
                    {
                        new SchemaOther {
                            Name = "Some Name"
                        },
                        new SchemaOther {
                            Name = "Some Name2"
                        },
                        new SchemaOther {
                            Name = "Some Name3"
                        }
                    };

                    // Act
                    database.InsertRange <SchemaOther, int>(entities, (e, k) => { e.Id = k; });

                    // Assert
                    entities[0].Id.Should().BeGreaterThan(0);
                    entities[1].Id.Should().BeGreaterThan(entities[0].Id);
                    entities[2].Id.Should().BeGreaterThan(entities[1].Id);
                }
            }
Ejemplo n.º 4
0
            public async Task Returns_first_N_matching_rows(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });

                    var orderBy = dialect is SqlServer2012Dialect ? "[Name] ASC" : "name ASC";

                    // Act
                    var entities = await database.GetTopAsync <Dog>(2, orderBy);

                    // Assert
                    entities.Should().BeEquivalentTo(new[]
                    {
                        new { Name = "Some Name 1", Age = 10 },
                        new { Name = "Some Name 2", Age = 10 }
                    },
                                                     o => o.WithStrictOrdering());
                }
            }
            public async Task Counts_all_entities_when_conditions_is_empty(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var result = await database.CountAsync <Dog>(new { });

                    // Assert
                    result.Should().Be(4);
                }
            }
        private long PerformInsertRange(IDialect dialect)
        {
            using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
            {
                // Arrange
                var entities = Enumerable.Range(0, 30000).Select(i => new SimpleBenchmarkEntity
                {
                    FirstName   = $"First Name {i}",
                    LastName    = $"Last Name {i}",
                    DateOfBirth = DateTime.Now
                }).ToList();

                var stopWatch = Stopwatch.StartNew();

                // Act
                using (var transaction = database.StartUnitOfWork())
                {
                    transaction.InsertRange(entities);
                    transaction.SaveChanges();
                }

                // Assert
                stopWatch.Stop();
                Console.WriteLine($"Performed insertrange in {stopWatch.ElapsedMilliseconds}ms");

                return(stopWatch.ElapsedMilliseconds);
            }
        }
Ejemplo n.º 7
0
            public async Task Filters_result_by_conditions(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = await database.GetTopAsync <Dog>(2, "name", "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age", new { Name = "Some Name", Age = 10 });

                    // Assert
                    entities.Should().HaveCount(2);
                }
            }
Ejemplo n.º 8
0
            public async Task Filters_result_by_conditions(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = await database.GetRangeAsync <Dog>(new { Age = 10 });

                    // Assert
                    entities.Count().Should().Be(3);
                }
            }
Ejemplo n.º 9
0
            public async Task Matches_column_name_case_insensitively(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = await database.GetRangeAsync <Dog>(new { age = 10 });

                    // Assert
                    entities.Count().Should().Be(3);
                }
            }
Ejemplo n.º 10
0
            public void Test_Single_First_Default()
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(Dialect.SqlServer2012))
                {
                    var sql = "select 0 where 1 = 0;"; // no rows

                    var ex = Assert.Throws <InvalidOperationException>(() => database.QueryFirst <int>(sql));
                    Assert.Equal("Sequence contains no elements", ex.Message);

                    ex = Assert.Throws <InvalidOperationException>(() => database.QuerySingle <int>(sql));
                    Assert.Equal("Sequence contains no elements", ex.Message);

                    Assert.Equal(0, database.QueryFirstOrDefault <int>(sql));
                    Assert.Equal(0, database.QuerySingleOrDefault <int>(sql));

                    sql = "select 1;"; // one row
                    Assert.Equal(1, database.QueryFirst <int>(sql));
                    Assert.Equal(1, database.QuerySingle <int>(sql));
                    Assert.Equal(1, database.QueryFirstOrDefault <int>(sql));
                    Assert.Equal(1, database.QuerySingleOrDefault <int>(sql));

                    sql = "select 2 union select 3 order by 1;"; // two rows
                    Assert.Equal(2, database.QueryFirst <int>(sql));

                    ex = Assert.Throws <InvalidOperationException>(() => database.QuerySingle <int>(sql));
                    Assert.Equal("Sequence contains more than one element", ex.Message);

                    Assert.Equal(2, database.QueryFirstOrDefault <int>(sql));

                    ex = Assert.Throws <InvalidOperationException>(() => database.QuerySingleOrDefault <int>(sql));
                    Assert.Equal("Sequence contains more than one element", ex.Message);
                }
            }
                public void TestExecuteMultipleCommandStrongType()
                {
                    using (var database = BlankDatabaseFactory.MakeDatabase(Dialect.SqlServer2012))
                    {
                        database.Execute("create table #t(Name nvarchar(max), Age int)");
                        try
                        {
                            var tally = database.ExecuteMultiple("insert #t (Name,Age) values(@Name, @Age)", new List <Student>
                            {
                                new Student {
                                    Age = 1, Name = "sam"
                                },
                                new Student {
                                    Age = 2, Name = "bob"
                                }
                            });

                            var sum = database.Query <int>("select sum(Age) from #t").First();
                            Assert.Equal(2, tally.NumRowsAffected);
                            Assert.Equal(3, sum);
                        }
                        finally
                        {
                            database.Execute("drop table #t");
                        }
                    }
                }
Ejemplo n.º 12
0
 public void TupleClassParameter_Works()
 {
     using (var database = BlankDatabaseFactory.MakeDatabase(Dialect.SqlServer2012))
     {
         Assert.Equal(42, database.QuerySingle <int>("select @Item1", Tuple.Create(42, "Fred")));
     }
 }
            public void Gets_second_page(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = database.GetPage <Dog>(
                        new PageIndexPageBuilder(2, 2),
                        "Age DESC",
                        "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age",
                        new { Name = "Some Name", Age = 10 }).Items;

                    // Assert
                    entities.Count().Should().Be(1);
                    entities[0].Name.Should().Be("Some Name 3");
                }
            }
            public void Gets_first_page(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var pageBuilder = new PageIndexPageBuilder(1, 2);
                    var page        = database.GetPage <Dog>(pageBuilder, "Age", new { Age = 10 });
                    var entities    = page.Items;

                    // Assert
                    entities.Count().Should().Be(2);
                    entities[0].Name.Should().Be("Some Name 1");
                    entities[1].Name.Should().Be("Some Name 2");
                }
            }
Ejemplo n.º 15
0
            public async Task Filters_result_by_conditions(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = await database.GetPageAsync <Dog>(
                        new PageIndexPageBuilder(1, 10),
                        "Age",
                        "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age",
                        new { Name = "Some Name", Age = 10 });

                    // Assert
                    entities.Items.Count().Should().Be(3);
                }
            }
Ejemplo n.º 16
0
            public async Task Returns_everything_when_conditions_is_null(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = await database.GetRangeAsync <Dog>(null);

                    // Assert
                    entities.Count().Should().Be(4);
                }
            }
Ejemplo n.º 17
0
            public async Task Gets_first_page(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = (await database.GetPageAsync <Dog>(
                                        new PageIndexPageBuilder(1, 2),
                                        "Age DESC",
                                        "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age",
                                        new { Name = "Some Name", Age = 10 })).Items;

                    // Assert
                    entities.Count().Should().Be(2);
                    entities[0].Name.Should().Be("Some Name 1");
                    entities[1].Name.Should().Be("Some Name 2");
                }
            }
Ejemplo n.º 18
0
            public void Counts_all_entities_when_conditions_is_null(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var result = database.Count <Dog>();

                    // Assert
                    result.Should().Be(4);
                }
            }
Ejemplo n.º 19
0
            public void Gets_all(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = database.GetAll <Dog>();

                    // Assert
                    entities.Count().Should().Be(4);
                }
            }
 public async Task TestBasicStringUsageQueryFirstAsync()
 {
     using (var database = BlankDatabaseFactory.MakeDatabase(Dialect.SqlServer2012))
     {
         Assert.Equal("abc", await database.QueryFirstAsync <string>("select 'abc' as [Value] union all select @value", new { value = "def" }).ConfigureAwait(false));
     }
 }
Ejemplo n.º 21
0
            public async Task Filters_result_by_conditions(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 11
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 10
                    });

                    // Act
                    var entities = await database.GetTopAsync <Dog>(2, "name", new { Age = 10 });

                    // Assert
                    entities.Should().BeEquivalentTo(new[]
                    {
                        new { Name = "Some Name 2", Age = 10 },
                        new { Name = "Some Name 3", Age = 10 }
                    },
                                                     o => o.WithStrictOrdering());
                }
            }
Ejemplo n.º 22
0
            public async Task Returns_empty_set_past_last_page(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entities = (await database.GetPageAsync <Dog>(
                                        new PageIndexPageBuilder(3, 2),
                                        "Age DESC",
                                        "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age",
                                        new { Name = "Some Name", Age = 10 })).Items;

                    // Assert
                    entities.Should().BeEmpty();
                }
            }
Ejemplo n.º 23
0
            public void Throws_exception_if_orderby_is_not_a_known_column(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    Func <Task> act = async() => await database.GetTopAsync <Dog>(2, "WHERE Age = 10");

                    // Assert
                    act.Should().Throw <Exception>();
                }
            }
Ejemplo n.º 24
0
            public async Task Returns_page_from_everything_when_conditions_is_null(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var page = await database.GetPageAsync <Dog>(new PageIndexPageBuilder(2, 2), "Age DESC");

                    var entities = page.Items;

                    // Assert
                    entities.Count().Should().Be(2);
                }
            }
            public async Task Counts_entities_matching_conditions(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var result = await database.CountAsync <Dog>($"WHERE Age < {11}");

                    // Assert
                    result.Should().Be(3);
                }
            }
Ejemplo n.º 26
0
            public async Task Gets_second_page(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var pageBuilder = new PageIndexPageBuilder(2, 2);
                    var page        = await database.GetPageAsync <Dog>(pageBuilder, "Age DESC", new { Age = 10 });

                    var entities = page.Items;

                    // Assert
                    entities.Count().Should().Be(1);
                    entities[0].Name.Should().Be("Some Name 3");
                }
            }
            public void Inserts_entity_with_int64_primary_key(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    var entities = new[]
                    {
                        new KeyInt64 {
                            Name = "Some Name"
                        },
                        new KeyInt64 {
                            Name = "Some Name2"
                        },
                        new KeyInt64 {
                            Name = "Some Name3"
                        }
                    };

                    // Act
                    database.InsertRange <KeyInt64, long>(entities, (e, k) => { e.Id = k; });

                    // Assert
                    entities[0].Id.Should().BeGreaterThan(0);
                    entities[1].Id.Should().BeGreaterThan(entities[0].Id);
                    entities[2].Id.Should().BeGreaterThan(entities[1].Id);
                }
            }
Ejemplo n.º 28
0
            public async Task Returns_empty_set_past_last_page(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var pageBuilder = new PageIndexPageBuilder(3, 2);
                    var page        = await database.GetPageAsync <Dog>(pageBuilder, "Age DESC", new { Age = 10 });

                    var entities = page.Items;

                    // Assert
                    entities.Should().BeEmpty();
                }
            }
            public void Gets_first_matching_result(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var entity = database.FindFirst <Dog>("Name DESC", new { Age = 10 });

                    // Assert
                    entity.Should().BeEquivalentTo(new Dog {
                        Name = "Some Name 3", Age = 10
                    }, o => o.Excluding(e => e.Id));
                }
            }
Ejemplo n.º 30
0
            public async Task Deletes_all_entities(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    database.Insert(new Dog {
                        Name = "Some Name 1", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 2", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 3", Age = 10
                    });
                    database.Insert(new Dog {
                        Name = "Some Name 4", Age = 11
                    });

                    // Act
                    var result = await database.DeleteAllAsync <Dog>();

                    // Assert
                    result.NumRowsAffected.Should().Be(4);
                    database.Count <Dog>().Should().Be(0);
                }
            }