Exemple #1
0
        public void Clone()
        {
            var item  = new WhereItem("field1", "a string");
            var clone = item.Clone();

            Assert.AreEqual(item, clone);
            clone.Value = "something-else";
            Assert.AreNotEqual(item, clone);
            clone.Value = "a string";
            Assert.AreEqual(item, clone);

            var parm  = new QueryParameter("someparm", "testvalue");
            var item2 = new WhereString("field2=@someparm or field3='value'", parm);

            var clause = new WhereClause(JoinType.And, item, item2);
            var clone2 = clause.Clone();

            Assert.AreEqual(clause, clone2);
            parm.Value = "testvalue2";
            Assert.AreNotEqual(clause, clone2);
            parm.Value = "testvalue";
            Assert.AreEqual(clause, clone2);

            item.Value = "n";
            Assert.AreNotEqual(clause, clone2);
            item.Value = "a string";
            Assert.AreEqual(clause, clone2);
        }
Exemple #2
0
        /// <summary>
        /// 获取Where语句
        /// </summary>
        /// <returns></returns>
        public virtual string GetWhere()
        {
            var whereClause = WhereClause.Clone(AliasRegister, ParameterManager.Clone());

            AddFilters(whereClause);
            return(whereClause.ToSql());
        }
Exemple #3
0
        public void Clone()
        {
            var clone = _whereClause.Clone(_cloneContext);

            Assert.That(clone, Is.Not.Null);
            Assert.That(clone, Is.Not.SameAs(_whereClause));
            Assert.That(clone.Predicate, Is.SameAs(_whereClause.Predicate));
        }
Exemple #4
0
 public override SqlNode Clone()
 {
     return(new SelectStatement()
     {
         Distinct = Distinct,
         FromClause = FromClause?.Clone() as FromClause,
         GroupByClause = GroupByClause?.Clone() as GroupByClause,
         HavingClause = HavingClause?.Clone() as HavingClause,
         OffsetLimitClause = OffsetLimitClause?.Clone() as OffsetLimitClause,
         OrderByClause = OrderByClause?.Clone() as OrderByClause,
         SelectElements = SelectElements?.Select(x => x.Clone() as SelectExpression).ToList(),
         WhereClause = WhereClause?.Clone() as WhereClause
     });
 }
Exemple #5
0
        // ------------------------------------------
        // ACCESSORS
        // ------------------------------------------

        #region Accessors

        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns>Returns the cloned instance.</returns>
        public override object Clone(params string[] areas)
        {
            var clone = base.Clone(areas) as DbSingleQuery;

            clone.Fields           = Fields?.Select(p => p.Clone <DbField>()).ToList();
            clone.UnionClauses     = UnionClauses?.Select(p => p?.Clone <DbQueryUnionClause>()).ToList();
            clone.FromClause       = FromClause?.Clone <DbQueryFromClause>();
            clone.WhereClause      = WhereClause?.Clone <DbQueryWhereClause>();
            clone.GroupByClause    = GroupByClause?.Clone <DbQueryGroupByClause>();
            clone.HavingClause     = HavingClause?.Clone <DbQueryHavingClause>();
            clone.OrderByClause    = OrderByClause?.Clone <DbQueryOrderByClause>();
            clone.ReturnedIdFields = ReturnedIdFields?.Select(p => p.Clone <DbField>()).ToList();

            return(clone);
        }
Exemple #6
0
        public void Combine()
        {
            var item1 = new WhereItem("field1", 123);

            var parm  = new QueryParameter("someparm", "testvalue");
            var item2 = new WhereString("field2=@someparm or field3='value'", parm);
            var item3 = new WhereItem("field4", 123, parameterize: false);

            var clause = new WhereClause(JoinType.And, item1, item2);

            Assert.AreEqual("field1=@field1 AND (field2=@someparm or field3='value')", clause.GetSql());
            var newClause = clause.Clone();

            newClause.Add(item3, JoinType.Or);
            Assert.AreEqual("(field1=@field1 AND (field2=@someparm or field3='value')) OR field4=123", newClause.GetSql());

            Assert.AreEqual(2, newClause.Parameters.Count());
        }
Exemple #7
0
        public void TestClone()
        {
            _clause.Where("Name", "a");

            //复制副本
            var copy = _clause.Clone(null, null, _parameterManager.Clone());

            Assert.Equal("Where [Name]=@_p_0", GetSql());
            Assert.Equal("Where [Name]=@_p_0", copy.ToSql());

            //修改副本
            copy.Where("Code", 1);
            Assert.Equal("Where [Name]=@_p_0", GetSql());
            Assert.Equal("Where [Name]=@_p_0 And [Code]=@_p_1", copy.ToSql());

            //修改原对象
            _clause.Where("Age", 1);
            Assert.Equal("Where [Name]=@_p_0 And [Age]=@_p_1", GetSql());
            Assert.Equal("Where [Name]=@_p_0 And [Code]=@_p_1", copy.ToSql());
        }
        public void TestCloneWhereClause()
        {
            WhereClause whereClause = new WhereClause()
            {
                Expression = new BooleanScalarExpression()
                {
                    ScalarExpression = new ColumnReference()
                    {
                        Identifiers = new List <string>()
                        {
                            "c1"
                        }
                    }
                }
            };

            var clone = whereClause.Clone() as WhereClause;

            Assert.AreEqual(whereClause, clone);
            Assert.IsFalse(ReferenceEquals(whereClause, clone));
            Assert.IsFalse(ReferenceEquals(whereClause.Expression, clone.Expression));
        }