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); }
/// <summary> /// 获取Where语句 /// </summary> /// <returns></returns> public virtual string GetWhere() { var whereClause = WhereClause.Clone(AliasRegister, ParameterManager.Clone()); AddFilters(whereClause); return(whereClause.ToSql()); }
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)); }
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 }); }
// ------------------------------------------ // 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); }
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()); }
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)); }