/// <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&lt;TNewPoco,TBasePoco&gt;</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);
        }
Exemple #2
0
        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);
        }