public virtual int DoCount <T>(List <Expression <Func <T, bool> > > where, Func <int, bool> resultAction = null) where T : class
        {
            var query = _queryGenerator.GenerateCount(where, out IList <QueryInfo> queryParameters);
            var cmd   = new DotEntityDbCommand(DbOperationType.SelectScaler, query, queryParameters, commandBehavior: CommandBehavior.SingleRow);

            DotEntityDbConnector.ExecuteCommand(cmd);
            return(cmd.GetResultAs <int>());
        }
Exemple #2
0
        public void Select_Count_Generator_With_NotIn_In_Where_Valid()
        {
            var lst = new List <int> {
                1, 2, 3, 4
            };
            var sql = generator.GenerateCount(new List <Expression <Func <Product, bool> > >
            {
                product => product.ProductName == GetName(),
                product => !lst.Contains(product.Id)
            }, out IList <QueryInfo> queryParameters);
            var expected = "SELECT COUNT(*) FROM `Product` WHERE `ProductName` = @ProductName AND `Id` NOT IN (@Id_InParam_1,@Id_InParam_2,@Id_InParam_3,@Id_InParam_4);";

            Assert.AreEqual(expected, sql);
            Assert.AreEqual(GetName(), queryParameters.First(x => x.ParameterName == "ProductName").PropertyValue);
            Assert.AreEqual(1, queryParameters.First(x => x.ParameterName == "Id_InParam_1").PropertyValue);
            Assert.AreEqual(2, queryParameters.First(x => x.ParameterName == "Id_InParam_2").PropertyValue);
            Assert.AreEqual(3, queryParameters.First(x => x.ParameterName == "Id_InParam_3").PropertyValue);
            Assert.AreEqual(4, queryParameters.First(x => x.ParameterName == "Id_InParam_4").PropertyValue);
        }