mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 修复 UseGenerateCommandParameterWithLambda(true) 时子语句的参数没整合到主语句;#231
- 增加 ISelect.RawJoin 方法以便实现 Outer Apply 查询;#200
This commit is contained in:
		@@ -1226,6 +1226,14 @@
 | 
			
		||||
            <param name="parms">参数</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.ISelect0`2.RawJoin(System.String)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            在 JOIN 位置插入 SQL 内容<para></para>
 | 
			
		||||
            如:.RawJoin("OUTER APPLY ( select id from t2 ) b")
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="sql"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.ISelect0`2.Where(System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            原生sql语法条件,Where("id = ?id", new { id = 1 })
 | 
			
		||||
@@ -2953,6 +2961,40 @@
 | 
			
		||||
            <param name="end"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSqlGlobalExpressionCall.Contains``2(System.Collections.Generic.IEnumerable{System.ValueTuple{``0,``1}},``0,``1)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            C#:从元组集合中查找 exp1, exp2 是否存在<para></para>
 | 
			
		||||
            SQL: <para></para>
 | 
			
		||||
            exp1 = that[0].Item1 and exp2 = that[0].Item2 OR <para></para>
 | 
			
		||||
            exp1 = that[1].Item1 and exp2 = that[1].Item2 OR <para></para>
 | 
			
		||||
            ... <para></para>
 | 
			
		||||
            注意:当 that 为 null 或 empty 时,返回 1=0
 | 
			
		||||
            </summary>
 | 
			
		||||
            <typeparam name="T1"></typeparam>
 | 
			
		||||
            <typeparam name="T2"></typeparam>
 | 
			
		||||
            <param name="that"></param>
 | 
			
		||||
            <param name="exp1"></param>
 | 
			
		||||
            <param name="exp2"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSqlGlobalExpressionCall.Contains``3(System.Collections.Generic.IEnumerable{System.ValueTuple{``0,``1,``2}},``0,``1,``2)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            C#:从元组集合中查找 exp1, exp2, exp2 是否存在<para></para>
 | 
			
		||||
            SQL: <para></para>
 | 
			
		||||
            exp1 = that[0].Item1 and exp2 = that[0].Item2 and exp3 = that[0].Item3 OR <para></para>
 | 
			
		||||
            exp1 = that[1].Item1 and exp2 = that[1].Item2 and exp3 = that[1].Item3 OR <para></para>
 | 
			
		||||
            ... <para></para>
 | 
			
		||||
            注意:当 that 为 null 或 empty 时,返回 1=0
 | 
			
		||||
            </summary>
 | 
			
		||||
            <typeparam name="T1"></typeparam>
 | 
			
		||||
            <typeparam name="T2"></typeparam>
 | 
			
		||||
            <typeparam name="T3"></typeparam>
 | 
			
		||||
            <param name="that"></param>
 | 
			
		||||
            <param name="exp1"></param>
 | 
			
		||||
            <param name="exp2"></param>
 | 
			
		||||
            <param name="exp3"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSqlGlobalExtensions.Distance(System.Drawing.Point,System.Drawing.Point)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            测量两个经纬度的距离,返回单位:米
 | 
			
		||||
@@ -3217,49 +3259,3 @@
 | 
			
		||||
        </member>
 | 
			
		||||
    </members>
 | 
			
		||||
</doc>
 | 
			
		||||
<EFBFBD>完成(可能)被其他线程事务自动提交
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="handler">事务体 () => {}</param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:IFreeSql.Transaction(System.TimeSpan,System.Action)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            开启事务(不支持异步)
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
			
		||||
            <param name="handler">事务体 () => {}</param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:IFreeSql.Transaction(System.Data.IsolationLevel,System.TimeSpan,System.Action)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            开启事务(不支持异步)
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="isolationLevel"></param>
 | 
			
		||||
            <param name="handler">事务体 () => {}</param>
 | 
			
		||||
            <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:IFreeSql.Ado">
 | 
			
		||||
            <summary>
 | 
			
		||||
            数据库访问对象
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:IFreeSql.Aop">
 | 
			
		||||
            <summary>
 | 
			
		||||
            所有拦截方法都在这里
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:IFreeSql.CodeFirst">
 | 
			
		||||
            <summary>
 | 
			
		||||
            CodeFirst 模式开发相关方法
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:IFreeSql.DbFirst">
 | 
			
		||||
            <summary>
 | 
			
		||||
            DbFirst 模式开发相关方法
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="P:IFreeSql.GlobalFilter">
 | 
			
		||||
            <summary>
 | 
			
		||||
            全局过滤设置,可默认附加为 Select/Update/Delete 条件
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
    </members>
 | 
			
		||||
</doc>
 | 
			
		||||
 
 | 
			
		||||
@@ -226,6 +226,13 @@ namespace FreeSql
 | 
			
		||||
        /// <param name="parms">参数</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        TSelect RightJoin(string sql, object parms = null);
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 在 JOIN 位置插入 SQL 内容<para></para>
 | 
			
		||||
        /// 如:.RawJoin("OUTER APPLY ( select id from t2 ) b")
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="sql"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        TSelect RawJoin(string sql);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 原生sql语法条件,Where("id = ?id", new { id = 1 })
 | 
			
		||||
 
 | 
			
		||||
@@ -808,6 +808,8 @@ namespace FreeSql.Internal
 | 
			
		||||
                                        if (fsqlType == null) break;
 | 
			
		||||
                                        if (exp3.Method.Name != "ToList")
 | 
			
		||||
                                            fsqlType.GetField("_limit", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(fsql, 1);
 | 
			
		||||
                                        if (tsc.dbParams != null)
 | 
			
		||||
                                            fsqlType.GetField("_params", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(fsql, tsc.dbParams);
 | 
			
		||||
                                        fsqltables = fsqlType.GetField("_tables", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(fsql) as List<SelectTableInfo>;
 | 
			
		||||
                                        //fsqltables[0].Alias = $"{tsc._tables[0].Alias}_{fsqltables[0].Alias}";
 | 
			
		||||
                                        if (fsqltables != tsc._tables)
 | 
			
		||||
 
 | 
			
		||||
@@ -244,6 +244,19 @@ namespace FreeSql.Internal.CommonProvider
 | 
			
		||||
            if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject(sql, parms));
 | 
			
		||||
            return this as TSelect;
 | 
			
		||||
        }
 | 
			
		||||
        public TSelect RightJoin(string sql, object parms = null)
 | 
			
		||||
        {
 | 
			
		||||
            if (string.IsNullOrEmpty(sql)) return this as TSelect;
 | 
			
		||||
            _join.Append(" \r\nRIGHT JOIN ").Append(sql);
 | 
			
		||||
            if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject(sql, parms));
 | 
			
		||||
            return this as TSelect;
 | 
			
		||||
        }
 | 
			
		||||
        public TSelect RawJoin(string sql)
 | 
			
		||||
        {
 | 
			
		||||
            if (string.IsNullOrEmpty(sql)) return this as TSelect;
 | 
			
		||||
            _join.Append(" \r\n").Append(sql);
 | 
			
		||||
            return this as TSelect;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public TSelect Limit(int limit)
 | 
			
		||||
        {
 | 
			
		||||
@@ -273,14 +286,6 @@ namespace FreeSql.Internal.CommonProvider
 | 
			
		||||
            return this.Limit(pageSize) as TSelect;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public TSelect RightJoin(string sql, object parms = null)
 | 
			
		||||
        {
 | 
			
		||||
            if (string.IsNullOrEmpty(sql)) return this as TSelect;
 | 
			
		||||
            _join.Append(" \r\nRIGHT JOIN ").Append(sql);
 | 
			
		||||
            if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject(sql, parms));
 | 
			
		||||
            return this as TSelect;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public TSelect Skip(int offset)
 | 
			
		||||
        {
 | 
			
		||||
            _skip = offset;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user