Example #1
0
        public void TestGtEq()
        {
            var crit = new TestCriteria
            {
                DateFrom = DateTime.Now,
            };
            var builder = new TestQueryBuilder <TestCriteria>(crit);
            var query   = builder.Build();

            Assert.AreEqual("Select TableName.* from TableName WHERE TableName.Date >= @TableNameDateFrom",
                            SimplifyString(query.Sql));
            var dynamicParameters = ToDynamicParameters(query.Parameters);
            var parameters        = GetKeyValues(dynamicParameters);

            Assert.AreEqual(1, dynamicParameters.ParameterNames.Count());
            Assert.AreEqual("TableNameDateFrom", dynamicParameters.ParameterNames.Single());
            Assert.AreEqual(crit.DateFrom, parameters["TableNameDateFrom"]);
        }
Example #2
0
        public void TestFormatter()
        {
            var testCriteria = new TestCriteria
            {
                DateTimeWithFormatter = DateTime.Now,
            };
            var builder = new TestQueryBuilder <TestCriteria>(testCriteria);
            var query   = builder.Build();

            Assert.AreEqual(
                "Select TableName.* from TableName WHERE TableName.DateTimeWithFormatter = @TableNameDateTimeWithFormatter"
                , SimplifyString(query.Sql));
            var dynamicParameters = ToDynamicParameters(query.Parameters);
            var parameters        = GetKeyValues(dynamicParameters);

            Assert.AreEqual(1, dynamicParameters.ParameterNames.Count());
            Assert.AreEqual("TableNameDateTimeWithFormatter", dynamicParameters.ParameterNames.Single());
            Assert.AreEqual("1", parameters["TableNameDateTimeWithFormatter"]);
        }
Example #3
0
        public void TestExpression()
        {
            var testCriteria = new TestCriteria
            {
                DateWithExpression = DateTime.Now,
            };
            var builder = new TestQueryBuilder <TestCriteria>(testCriteria);
            var query   = builder.Build();

            Assert.AreEqual(
                "Select TableName.* from TableName WHERE ((TableName.Date is not null and TableName.Date >= @TableNameDateWithExpression) or (TableName.DateSecond >= @TableNameDateWithExpression))"
                , SimplifyString(query.Sql));
            var dynamicParameters = ToDynamicParameters(query.Parameters);
            var parameters        = GetKeyValues(dynamicParameters);

            Assert.AreEqual(1, dynamicParameters.ParameterNames.Count());
            Assert.AreEqual("TableNameDateWithExpression", dynamicParameters.ParameterNames.Single());
            Assert.AreEqual(testCriteria.DateWithExpression, parameters["TableNameDateWithExpression"]);
        }
Example #4
0
        public void TestIn()
        {
            var testCriteria = new TestCriteria
            {
                Codes = new[] { "1", "2", "3" },
            };
            var builder = new TestQueryBuilder <TestCriteria>(testCriteria);
            var query   = builder.Build();

            Assert.AreEqual(
                "Select TableName.* from TableName WHERE TableName.Code in @TableNameCodes",
                SimplifyString(query.Sql));

            var dynamicParameters = ToDynamicParameters(query.Parameters);
            var parameters        = GetKeyValues(dynamicParameters);

            Assert.AreEqual(1, dynamicParameters.ParameterNames.Count());
            Assert.AreEqual("TableNameCodes", dynamicParameters.ParameterNames.Single());
            CollectionAssert.AreEqual(testCriteria.Codes.ToList(), (string[])parameters["TableNameCodes"]);
        }
        public async Task <WrappedData> Execute(TestCriteria criteria, DbConnection connection)
        {
            var result = new WrappedData();

            result.FirstClassData  = new List <FirstClass>();
            result.SecondClassData = new List <SecondClass>();

            if (connection.State != System.Data.ConnectionState.Open)
            {
                await connection.OpenAsync();
            }
            using (var command = connection.CreateCommand())
            {
                command.CommandText = "usp_Company_GetById_With_Children";
                command.CommandType = System.Data.CommandType.StoredProcedure;
                var param = command.CreateParameter();
                param.ParameterName = "@CompanyId";
                param.DbType        = System.Data.DbType.Int32;
                param.Value         = criteria.CompanyId;
                if (criteria.CompanyId == null)
                {
                    param.Value = DBNull.Value;
                }
                command.Parameters.Add(param);

                using (DbDataReader reader = await command.ExecuteReaderAsync())
                {
                    while (await reader.ReadAsync())
                    {
                        result.FirstClassData.Add(_firstClassMapper.Map(reader));
                    }
                    await reader.NextResultAsync();

                    while (await reader.ReadAsync())
                    {
                        result.SecondClassData.Add(_secondClassMapper.Map(reader));
                    }
                }
            }
            return(result);
        }
Example #6
0
        public void TestGtEqAndLtEq()
        {
            var testCriteria = new TestCriteria
            {
                DateFrom = DateTime.Now,
                DateTo   = DateTime.Now
            };
            var builder = new TestQueryBuilder <TestCriteria>(testCriteria);
            var query   = builder.Build();

            Assert.AreEqual(
                "Select TableName.* from TableName WHERE TableName.Date >= @TableNameDateFrom AND TableName.Date <= @TableNameDateTo",
                SimplifyString(query.Sql));
            var dynamicParameters = ToDynamicParameters(query.Parameters);
            var parameters        = GetKeyValues(dynamicParameters);

            Assert.AreEqual(2, dynamicParameters.ParameterNames.Count());
            Assert.AreEqual("TableNameDateFrom", dynamicParameters.ParameterNames.First());
            Assert.AreEqual("TableNameDateTo", dynamicParameters.ParameterNames.Last());
            Assert.AreEqual(testCriteria.DateFrom, parameters["TableNameDateFrom"]);
            Assert.AreEqual(testCriteria.DateTo, parameters["TableNameDateTo"]);
        }