mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +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