Ejemplo n.º 1
0
        public void QueryTest()
        {
            var sqlProvider = new MySqlSqlProvider();

            using (var session = this.Factory.CreateRawSession())
            {
                #region DateTime

                QueryTestInternal(session,
                                  f => f.Birthday < new DateTime(2019, 02, 07, 23, 28, 00, 00),
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE Birthday < @Birthday",
                                  1);

                var dateTime = new DateTime(2019, 02, 07, 23, 28, 00, 00);
                QueryTestInternal(session,
                                  f => f.Birthday < dateTime,
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE Birthday < @Birthday",
                                  1);

                //QueryTestInternal(session,
                //    f => f.Birthday < DateTime.Now,
                //    "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE Birthday < NOW()",
                //    0);

                //QueryTestInternal(session,
                //    f => f.Birthday == DateTime.Today,
                //    "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE DATE(Birthday) = DATE(NOW())",
                //    0);

                #endregion

                #region Lists

                var namesList = new List <string>
                {
                    "Jaina",
                    "Arthas",
                    "Garrosh"
                };
                QueryTestInternal(session,
                                  f => namesList.Contains(f.FirstName),
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE FirstName IN (@FirstName, @FirstName1, @FirstName2)",
                                  3);

                QueryTestInternal(session,
                                  f => new List <string>
                {
                    "Jaina",
                    "Arthas",
                    "Garrosh"
                }.Contains(f.FirstName),
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE FirstName IN (@FirstName, @FirstName1, @FirstName2)",
                                  3);

                #endregion

                QueryTestInternal(session,
                                  f => f.FirstName == "Jaina",
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE FirstName = @FirstName",
                                  1);

                QueryTestInternal(session,
                                  f => f.FirstName == "Temp" && f.ID == 2 || f.LastName == "Proudmoore" && f.Salary != 0,
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE ((FirstName = @FirstName) AND (ID = @ID)) OR ((LastName = @LastName) AND (Salary <> @Salary))",
                                  4);

                QueryTestInternal(session,
                                  f => f.ID == 2,
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE ID = @ID",
                                  1);

                var id = 3;
                QueryTestInternal(session,
                                  f => f.ID == id,
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE ID = @ID",
                                  1);

                var ids = new List <int>
                {
                    1,
                    2,
                    3
                };
                foreach (var currentId in ids)
                {
                    QueryTestInternal(session,
                                      f => f.ID == currentId,
                                      "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE ID = @ID",
                                      1);
                }

                QueryTestInternal(session,
                                  f => f.ID == this.GetId(),
                                  "SELECT ID, FirstName, LastName, Gender, Birthday, Status, Salary FROM Employee WHERE ID = @ID",
                                  1);
            }

            void QueryTestInternal(IRawDatabaseSession session, Expression <Func <Employee, bool> > expression, string expectedResultSql, int expectedResultParamaterCount)
            {
                var query    = sqlProvider.GetSqlForPredicate(expression, this.MappingProvider.GetMapping <Employee>());
                var result1  = session.ExecuteReader <Employee>(query);
                var replaced = query.GetWithReplacedParameters();

                Assert.True(query.Sql == expectedResultSql);
                Assert.True(query.Parameters.Count == expectedResultParamaterCount);
            }
        }
Ejemplo n.º 2
0
 public MySqlDataBaseSessionAsync(SdOrmConfig config)
     : base(new MySqlConnection(config.ConnectionString), config.Mappings)
 {
     this._sqlProvider = new MySqlSqlProvider();
 }