/// <summary>Where internal.</summary> /// <exception cref="Exception">Thrown when an exception error condition occurs.</exception> /// <typeparam name="T">Generic type parameter.</typeparam> /// <param name="whereType">Type of the where.</param> /// <param name="where"> The where.</param> /// <returns>A JoinSqlBuilder<TNewPoco,TBasePoco></returns> private JoinSqlBuilder <TNewPoco, TBasePoco> WhereInternal <T>(WhereType whereType, Expression <Func <T, bool> > where) { Type associatedType = this.PreviousAssociatedType(typeof(T), typeof(T)); if (associatedType == null) { throw new OrmException("Either the source or destination table should be associated "); } var ev = _dialectProvider.ExpressionVisitor <T>(); ev.WhereStatementWithoutWhereString = true; ev.PrefixFieldWithTableName = true; ev.Where(where); foreach (var p in ev.Parameters) { Parameters.Add(p); } var str = ev.WhereExpression; if (String.IsNullOrEmpty(str) == false) { this.whereList.Add(new KeyValuePair <string, WhereType>(str, whereType)); } return(this); }
public void Can_Select_using_object_Array_Contains([ValueSource(typeof(MyDataClass), nameof(MyDataClass.Dialectproviders))] IDialectProvider _dialectProvider) { var vals = new object[] { TestEnum.Val0, TestEnum.Val1 }; var visitor1 = _dialectProvider.ExpressionVisitor <TestType2>(); visitor1.Where(q => vals.Contains(q.EnumCol) || vals.Contains(q.EnumCol)); var sql1 = _dialectProvider.ToSelectStatement(visitor1, CommandFlags.None); var visitor2 = _dialectProvider.ExpressionVisitor <TestType2>(); visitor2.Where(q => Sql.In(q.EnumCol, vals) || Sql.In(q.EnumCol, vals)); var sql2 = _dialectProvider.ToSelectStatement(visitor2, CommandFlags.None); Assert.AreEqual(sql1.CommandText, sql2.CommandText); }