/// <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, "")); }
/// <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, "")); }
/// <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操作"); } }