コード例 #1
0
        public void EqOrNullTest()
        {
            using (ISession session = OpenSession())
            {
                var criteria      = (CriteriaImpl)session.CreateCriteria(typeof(Simple));
                var criteriaQuery = new CriteriaQueryTranslator(sessions, criteria, criteria.EntityOrClassName, "sql_alias");

                ICriterion exp       = Criterion.EqOrNull("Name", "foo");
                SqlString  sqlString = exp.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>());

                string expectedSql = "sql_alias.Name = ?";

                Assert.AreEqual(expectedSql, sqlString.ToString());
                Assert.AreEqual(1, sqlString.GetParameterCount());

                exp       = Criterion.EqOrNull("Name", null);
                sqlString = exp.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>());

                expectedSql = "sql_alias.Name is null";

                Assert.AreEqual(expectedSql, sqlString.ToString());
                Assert.AreEqual(0, sqlString.GetParameterCount());

                // Check that the result is the same than using official Restriction
                ICriterion orExpExpected = Restrictions.Or(Restrictions.IsNull("Name"), Restrictions.Eq("Name", "foo"));
                ICriterion orExpActual   = Restrictions.Or(Criterion.EqOrNull("Name", null), Criterion.EqOrNull("Name", "foo"));

                SqlString sqlStringExpected = orExpExpected.ToSqlString(criteria, criteriaQuery,
                                                                        new CollectionHelper.EmptyMapClass <string, IFilter>());
                SqlString sqlStringActual = orExpActual.ToSqlString(criteria, criteriaQuery,
                                                                    new CollectionHelper.EmptyMapClass <string, IFilter>());
                Assert.AreEqual(sqlStringExpected.ToString(), sqlStringActual.ToString());
            }
        }