Пример #1
0
        /// <summary>
        /// 直接执行union query操作,并返回结果
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <param name="source"></param>
        /// <param name="up"></param>
        /// <param name="order_by"></param>
        /// <param name="is_all"></param>
        /// <param name="express"></param>
        /// <returns></returns>
        public static UnitDataCollection UnionQuery <TSource>(this LinqDLR2Sql <TSource> source, UnitParameter up, string order_by, bool is_all = false, params LinqDLR2Sql <TSource>[] express)
        {
            var sql  = source.ToSql();
            var data = source.SQLGenerator.ConditionValues;

            if (express != null)
            {
                foreach (var e in express)
                {
                    sql += $@" {(is_all?"union all":"union")}
{e.ToSql()}";
                    foreach (var item in e.SQLGenerator.ConditionValues)
                    {
                        data.Add(item.Key, item.Value);
                    }
                }
            }
            sql = $"select * from ({sql}) t";
            if (!string.IsNullOrEmpty(order_by))
            {
                sql += $" order by {order_by}";
            }
            up.SetValue("sql", sql);
            foreach (var item in data)
            {
                up.SetValue(item.Key, item.Value);
            }
            return(DBUnitProxy.Query <LamdaExpressUnit>(up, ""));
        }
Пример #2
0
        /// <summary>
        /// 直接执行query操作,并返回结果
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <param name="source"></param>
        /// <param name="up"></param>
        /// <returns></returns>
        public static UnitDataCollection Query <TSource>(this LinqDLR2Sql <TSource> source, UnitParameter up)
        {
            var sql  = source.ToSql();
            var data = source.SQLGenerator.ConditionValues;

            up.SetValue("sql", sql);
            foreach (var item in data)
            {
                up.SetValue(item.Key, item.Value);
            }
            return(DBUnitProxy.Query <LamdaExpressUnit>(up, ""));
        }
Пример #3
0
 /// <summary>
 /// 直接执行Insert操作
 /// </summary>
 /// <typeparam name="TSource"></typeparam>
 /// <param name="source"></param>
 /// <param name="up"></param>
 /// <param name="columns"></param>
 public static void Insert <TSource>(this LinqDLR2Sql <TSource> source, UnitParameter up, object columns)
 {
     if (source.SQLGenerator is DaoSqlGenerator)
     {
         ((DaoSqlGenerator)source.SQLGenerator).DoInsert(source, columns);
         var sql  = ((DaoSqlGenerator)source.SQLGenerator).CurrentSQL;
         var data = source.SQLGenerator.ConditionValues;
         up.SetValue("sql", sql);
         foreach (var item in data)
         {
             up.SetValue(item.Key, item.Value);
         }
         DBUnitProxy.NonQuery <LamdaExpressUnit>(up, "nonquery");
     }
     else
     {
         throw new NotSupportedException("当前对象不支持Insert操作");
     }
 }