This commit is contained in:
2881099 2021-08-30 12:26:30 +08:00
parent 13b85d9c32
commit 50a8cc2376
6 changed files with 97 additions and 204 deletions

View File

@ -6,8 +6,12 @@
<members> <members>
<member name="T:FreeSql.BaseEntity`2"> <member name="T:FreeSql.BaseEntity`2">
<summary> <summary>
Entity base class, including CreateTime/UpdateTime/IsDeleted, the CRUD methods, and ID primary key definition.
<para></para>
包括 CreateTime/UpdateTime/IsDeleted、CRUD 方法、以及 ID 主键定义 的实体基类 包括 CreateTime/UpdateTime/IsDeleted、CRUD 方法、以及 ID 主键定义 的实体基类
<para></para> <para></para>
When TKey is int/long, the Id is set to be an auto-incremented primary key
<para></para>
当 TKey 为 int/long 时Id 主键被设为自增值主键 当 TKey 为 int/long 时Id 主键被设为自增值主键
</summary> </summary>
<typeparam name="TEntity"></typeparam> <typeparam name="TEntity"></typeparam>
@ -15,11 +19,13 @@
</member> </member>
<member name="P:FreeSql.BaseEntity`2.Id"> <member name="P:FreeSql.BaseEntity`2.Id">
<summary> <summary>
Primary key <br />
主键 主键
</summary> </summary>
</member> </member>
<member name="M:FreeSql.BaseEntity`2.FindAsync(`1)"> <member name="M:FreeSql.BaseEntity`2.FindAsync(`1)">
<summary> <summary>
Get data based on the value of the primary key <br />
根据主键值获取数据 根据主键值获取数据
</summary> </summary>
<param name="id"></param> <param name="id"></param>
@ -27,6 +33,7 @@
</member> </member>
<member name="M:FreeSql.BaseEntity`2.Find(`1)"> <member name="M:FreeSql.BaseEntity`2.Find(`1)">
<summary> <summary>
Get data based on the value of the primary key <br />
根据主键值获取数据 根据主键值获取数据
</summary> </summary>
<param name="id"></param> <param name="id"></param>
@ -34,50 +41,62 @@
</member> </member>
<member name="T:FreeSql.BaseEntity`1"> <member name="T:FreeSql.BaseEntity`1">
<summary> <summary>
Entity base class, including CreateTime/UpdateTime/IsDeleted, and sync/async CRUD methods.
<para></para>
包括 CreateTime/UpdateTime/IsDeleted、以及 CRUD 异步和同步方法的实体基类 包括 CreateTime/UpdateTime/IsDeleted、以及 CRUD 异步和同步方法的实体基类
</summary> </summary>
<typeparam name="TEntity"></typeparam> <typeparam name="TEntity"></typeparam>
</member> </member>
<member name="M:FreeSql.BaseEntity`1.Delete(System.Boolean)"> <member name="M:FreeSql.BaseEntity`1.Delete(System.Boolean)">
<summary> <summary>
To delete data <br />
删除数据 删除数据
</summary> </summary>
<param name="physicalDelete">是否物理删除</param> <param name="physicalDelete">To flag whether to delete the physical level of the data</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntity`1.Restore"> <member name="M:FreeSql.BaseEntity`1.Restore">
<summary> <summary>
To recover deleted data <br />
恢复删除的数据 恢复删除的数据
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntity`1.Update"> <member name="M:FreeSql.BaseEntity`1.Update">
<summary> <summary>
To update data <br />
更新数据 更新数据
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntity`1.Insert"> <member name="M:FreeSql.BaseEntity`1.Insert">
<summary> <summary>
To insert data <br />
插入数据 插入数据
</summary> </summary>
</member> </member>
<member name="M:FreeSql.BaseEntity`1.Save"> <member name="M:FreeSql.BaseEntity`1.Save">
<summary> <summary>
To insert or update data <br />
更新或插入 更新或插入
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntity`1.SaveMany(System.String)"> <member name="M:FreeSql.BaseEntity`1.SaveMany(System.String)">
<summary> <summary>
To completely save the navigation properties of the entity in the form of sub-tables. <br />
【完整】保存导航属性,子表 【完整】保存导航属性,子表
</summary> </summary>
<param name="navigatePropertyName">导航属性名</param> <param name="navigatePropertyName">Navigation property name</param>
</member> </member>
<member name="T:FreeSql.BaseEntityAsync`2"> <member name="T:FreeSql.BaseEntityAsync`2">
<summary> <summary>
Entity base class, including CreateTime/UpdateTime/IsDeleted, the async CRUD methods, and ID primary key definition.
<para></para>
包括 CreateTime/UpdateTime/IsDeleted、CRUD 异步方法、以及 ID 主键定义 的实体基类 包括 CreateTime/UpdateTime/IsDeleted、CRUD 异步方法、以及 ID 主键定义 的实体基类
<para></para> <para></para>
When TKey is int/long, the Id is set to be an auto-incremented primary key
<para></para>
当 TKey 为 int/long 时Id 主键被设为自增值主键 当 TKey 为 int/long 时Id 主键被设为自增值主键
</summary> </summary>
<typeparam name="TEntity"></typeparam> <typeparam name="TEntity"></typeparam>
@ -85,11 +104,13 @@
</member> </member>
<member name="P:FreeSql.BaseEntityAsync`2.Id"> <member name="P:FreeSql.BaseEntityAsync`2.Id">
<summary> <summary>
Primary key <br />
主键 主键
</summary> </summary>
</member> </member>
<member name="M:FreeSql.BaseEntityAsync`2.FindAsync(`1)"> <member name="M:FreeSql.BaseEntityAsync`2.FindAsync(`1)">
<summary> <summary>
Get data based on the value of the primary key <br />
根据主键值获取数据 根据主键值获取数据
</summary> </summary>
<param name="id"></param> <param name="id"></param>
@ -97,106 +118,138 @@
</member> </member>
<member name="T:FreeSql.BaseEntityAsync`1"> <member name="T:FreeSql.BaseEntityAsync`1">
<summary> <summary>
Entity base class, including CreateTime/UpdateTime/IsDeleted, and async CRUD methods.
<para></para>
包括 CreateTime/UpdateTime/IsDeleted、以及 CRUD 异步方法的实体基类 包括 CreateTime/UpdateTime/IsDeleted、以及 CRUD 异步方法的实体基类
</summary> </summary>
<typeparam name="TEntity"></typeparam> <typeparam name="TEntity"></typeparam>
</member> </member>
<member name="M:FreeSql.BaseEntityAsync`1.DeleteAsync(System.Boolean)"> <member name="M:FreeSql.BaseEntityAsync`1.DeleteAsync(System.Boolean)">
<summary> <summary>
To delete data <br />
删除数据 删除数据
</summary> </summary>
<param name="physicalDelete">是否物理删除</param> <param name="physicalDelete">To flag whether to delete the physical level of the data</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntityAsync`1.RestoreAsync"> <member name="M:FreeSql.BaseEntityAsync`1.RestoreAsync">
<summary> <summary>
To recover deleted data <br />
恢复删除的数据 恢复删除的数据
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntityAsync`1.UpdateAsync"> <member name="M:FreeSql.BaseEntityAsync`1.UpdateAsync">
<summary> <summary>
To update data <br />
更新数据 更新数据
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntityAsync`1.InsertAsync"> <member name="M:FreeSql.BaseEntityAsync`1.InsertAsync">
<summary> <summary>
To insert data <br />
插入数据 插入数据
</summary> </summary>
</member> </member>
<member name="M:FreeSql.BaseEntityAsync`1.SaveAsync"> <member name="M:FreeSql.BaseEntityAsync`1.SaveAsync">
<summary> <summary>
To insert or update data <br />
更新或插入 更新或插入
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntityAsync`1.SaveManyAsync(System.String)"> <member name="M:FreeSql.BaseEntityAsync`1.SaveManyAsync(System.String)">
<summary> <summary>
To completely save the navigation properties of the entity in the form of sub-tables. <br />
【完整】保存导航属性,子表 【完整】保存导航属性,子表
</summary> </summary>
<param name="navigatePropertyName">导航属性名</param> <param name="navigatePropertyName">Navigation property name</param>
</member> </member>
<member name="T:FreeSql.BaseEntity"> <member name="T:FreeSql.BaseEntity">
<summary> <summary>
Entity base class, including CreateTime/UpdateTime/IsDeleted.
<para></para>
包括 CreateTime/UpdateTime/IsDeleted 的实体基类 包括 CreateTime/UpdateTime/IsDeleted 的实体基类
</summary> </summary>
</member> </member>
<member name="P:FreeSql.BaseEntity.Orm"> <member name="P:FreeSql.BaseEntity.Orm">
<summary> <summary>
全局 IFreeSql orm 对象 Global IFreeSql ORM Object <br />
全局 IFreeSql ORM 对象
</summary> </summary>
</member> </member>
<member name="M:FreeSql.BaseEntity.Initialization(IFreeSql,System.Func{FreeSql.IUnitOfWork})"> <member name="M:FreeSql.BaseEntity.Initialization(IFreeSql,System.Func{FreeSql.IUnitOfWork})">
<summary> <summary>
To initialize the BaseEntity <br />
初始化 BaseEntity 初始化 BaseEntity
BaseEntity.Initialization(new FreeSqlBuilder()
<para></para>
.UseAutoSyncStructure(true)
<para></para>
.UseConnectionString(DataType.Sqlite, "data source=test.db;max pool size=5")
<para></para> <para></para>
BaseEntity.Initialization( <br />
new FreeSqlBuilder() <br />
.UseAutoSyncStructure(true) <br />
.UseConnectionString(DataType.Sqlite, "data source=test.db;max pool size=5") <br />
.Build()); .Build());
</summary> </summary>
<param name="fsql">IFreeSql orm 对象</param> <param name="fsql">IFreeSql ORM Object</param>
<param name="resolveUow">工作单元(事务)委托,如果不使用事务请传 null<para></para>解释由于AsyncLocal平台兼容不好所以交给外部管理</param> <param name="resolveUow">工作单元(事务)委托,如果不使用事务请传 null<para></para>解释由于AsyncLocal平台兼容不好所以交给外部管理</param>
</member> </member>
<member name="P:FreeSql.BaseEntity.CreateTime"> <member name="P:FreeSql.BaseEntity.CreateTime">
<summary> <summary>
Created time <br />
创建时间 创建时间
</summary> </summary>
</member> </member>
<member name="P:FreeSql.BaseEntity.UpdateTime"> <member name="P:FreeSql.BaseEntity.UpdateTime">
<summary> <summary>
Updated time <br />
更新时间 更新时间
</summary> </summary>
</member> </member>
<member name="P:FreeSql.BaseEntity.IsDeleted"> <member name="P:FreeSql.BaseEntity.IsDeleted">
<summary> <summary>
Logical Delete <br />
逻辑删除 逻辑删除
</summary> </summary>
</member> </member>
<member name="P:FreeSql.BaseEntity.Sort"> <member name="P:FreeSql.BaseEntity.Sort">
<summary> <summary>
Sort <br />
排序 排序
</summary> </summary>
</member> </member>
<member name="T:FreeSql.BaseEntityReadOnly`1">
<summary>
A readonly entity base class, including CreateTime/UpdateTime/IsDeleted.
<para></para>
包括 CreateTime/UpdateTime/IsDeleted 的只读实体基类
</summary>
<typeparam name="TEntity"></typeparam>
</member>
<member name="P:FreeSql.BaseEntityReadOnly`1.Select"> <member name="P:FreeSql.BaseEntityReadOnly`1.Select">
<summary> <summary>
To query data <br />
查询数据 查询数据
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntityReadOnly`1.Where(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})"> <member name="M:FreeSql.BaseEntityReadOnly`1.Where(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary> <summary>
查询条件Where(a => a.Id > 10)支持导航对象查询Where(a => a.Author.Email == "2881099@qq.com") Query conditions <br />
查询条件Where(a => a.Id> 10)
<para></para>
Support navigation object query <br />
支持导航对象查询Where(a => a.Author.Email == "2881099@qq.com")
</summary> </summary>
<param name="exp">lambda表达式</param> <param name="exp">lambda表达式</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.BaseEntityReadOnly`1.WhereIf(System.Boolean,System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})"> <member name="M:FreeSql.BaseEntityReadOnly`1.WhereIf(System.Boolean,System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary> <summary>
查询条件Where(true, a => a.Id > 10)支导航对象查询Where(true, a => a.Author.Email == "2881099@qq.com") Query conditions <br />
查询条件Where(true, a => a.Id > 10)
<para></para>
Support navigation object query <br />
支导航对象查询Where(true, a => a.Author.Email == "2881099@qq.com")
</summary> </summary>
<param name="condition">true 时生效</param> <param name="condition">true 时生效</param>
<param name="exp">lambda表达式</param> <param name="exp">lambda表达式</param>
@ -204,12 +257,14 @@
</member> </member>
<member name="P:FreeSql.BaseEntityReadOnly`1.Repository"> <member name="P:FreeSql.BaseEntityReadOnly`1.Repository">
<summary> <summary>
Repository object. <br />
仓储对象 仓储对象
</summary> </summary>
</member> </member>
<member name="M:FreeSql.BaseEntityReadOnly`1.Attach"> <member name="M:FreeSql.BaseEntityReadOnly`1.Attach">
<summary> <summary>
附加实体,在更新数据时,只更新变化的部分 To Attach entities. When updating data, only the changed part is updated. <br />
附加实体。在更新数据时,只更新变化的部分
</summary> </summary>
</member> </member>
</members> </members>

View File

@ -6,11 +6,13 @@
<members> <members>
<member name="T:FreeSql.DataAnnotations.JsonMapAttribute"> <member name="T:FreeSql.DataAnnotations.JsonMapAttribute">
<summary> <summary>
When the entity class property is <see cref="T:System.Object"/>, map storage in JSON format. <br />
当实体类属性为【对象】时,以 JSON 形式映射存储 当实体类属性为【对象】时,以 JSON 形式映射存储
</summary> </summary>
</member> </member>
<member name="M:FreeSqlJsonMapCoreExtensions.UseJsonMap(IFreeSql)"> <member name="M:FreeSqlJsonMapCoreExtensions.UseJsonMap(IFreeSql)">
<summary> <summary>
When the entity class property is <see cref="T:System.Object"/> and the attribute is marked as <see cref="T:FreeSql.DataAnnotations.JsonMapAttribute"/>, map storage in JSON format. <br />
当实体类属性为【对象】时,并且标记特性 [JsonMap] 时该属性将以JSON形式映射存储 当实体类属性为【对象】时,并且标记特性 [JsonMap] 时该属性将以JSON形式映射存储
</summary> </summary>
<returns></returns> <returns></returns>

View File

@ -512,5 +512,14 @@
<param name="that"></param> <param name="that"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
<summary>
批量注入 Repository可以参考代码自行调整
</summary>
<param name="services"></param>
<param name="globalDataFilter"></param>
<param name="assemblies"></param>
<returns></returns>
</member>
</members> </members>
</doc> </doc>

View File

@ -404,6 +404,7 @@ public static partial class FreeSqlGlobalExtensions
int level = -1) where T1 : class int level = -1) where T1 : class
{ {
var select = that as Select1Provider<T1>; var select = that as Select1Provider<T1>;
select._is_AsTreeCte = true;
var tb = select._tables[0].Table; var tb = select._tables[0].Table;
var navs = tb.Properties.Select(a => tb.GetTableRef(a.Key, false)) var navs = tb.Properties.Select(a => tb.GetTableRef(a.Key, false))
.Where(a => a != null && .Where(a => a != null &&
@ -545,6 +546,7 @@ JOIN {select._commonUtils.QuoteSqlName(tb.DbName)} a ON cte_tbc.cte_id = a.{sele
.WhereIf(level > 0, $"a.cte_level < {level + 1}") .WhereIf(level > 0, $"a.cte_level < {level + 1}")
.OrderBy(up, "a.cte_level desc") as Select1Provider<T1>; .OrderBy(up, "a.cte_level desc") as Select1Provider<T1>;
newSelect._is_AsTreeCte = true;
newSelect._params = new List<DbParameter>(select._params.ToArray()); newSelect._params = new List<DbParameter>(select._params.ToArray());
newSelect._includeInfo = select._includeInfo; newSelect._includeInfo = select._includeInfo;
newSelect._includeManySubListOneToManyTempValue1 = select._includeManySubListOneToManyTempValue1; newSelect._includeManySubListOneToManyTempValue1 = select._includeManySubListOneToManyTempValue1;

View File

@ -3172,177 +3172,6 @@
<param name="parms"></param> <param name="parms"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.IAdo.ExecuteConnectTestAsync(System.Int32,System.Threading.CancellationToken)">
<summary>
测试数据库是否连接正确,本方法执行如下命令:<para></para>
MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1<para></para>
Oracle: SELECT 1 FROM dual<para></para>
</summary>
<param name="commandTimeout">命令超时设置(秒)</param>
<param name="cancellationToken"></param>
<returns>true: 成功, false: 失败</returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{FreeSql.Internal.Model.FetchCallbackArgs{System.Data.Common.DbDataReader},System.Threading.Tasks.Task},System.Data.CommandType,System.String,System.Data.Common.DbParameter[],System.Threading.CancellationToken)">
<summary>
查询若使用读写分离查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
</summary>
<param name="readerHander"></param>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<param name="cancellationToken"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{FreeSql.Internal.Model.FetchCallbackArgs{System.Data.Common.DbDataReader},System.Threading.Tasks.Task},System.String,System.Object,System.Threading.CancellationToken)">
<summary>
查询ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 })<para></para>
提示parms 参数还可以传 Dictionary&lt;string, object&gt;
</summary>
<param name="readerHander"></param>
<param name="cmdText"></param>
<param name="parms"></param>
<param name="cancellationToken"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[],System.Threading.CancellationToken)">
<summary>
查询
</summary>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<param name="cancellationToken"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.String,System.Object,System.Threading.CancellationToken)">
<summary>
查询ExecuteArrayAsync("select * from user where age > @age", new { age = 25 })<para></para>
提示parms 参数还可以传 Dictionary&lt;string, object&gt;
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[],System.Threading.CancellationToken)">
<summary>
查询
</summary>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<param name="cancellationToken"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.String,System.Object,System.Threading.CancellationToken)">
<summary>
查询ExecuteDataSetAsync("select * from user where age > @age; select 2", new { age = 25 })<para></para>
提示parms 参数还可以传 Dictionary&lt;string, object&gt;
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[],System.Threading.CancellationToken)">
<summary>
查询
</summary>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<param name="cancellationToken"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.String,System.Object,System.Threading.CancellationToken)">
<summary>
查询ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 })<para></para>
提示parms 参数还可以传 Dictionary&lt;string, object&gt;
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[],System.Threading.CancellationToken)">
<summary>
在【主库】执行
</summary>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<param name="cancellationToken"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.String,System.Object,System.Threading.CancellationToken)">
<summary>
在【主库】执行ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 })<para></para>
提示parms 参数还可以传 Dictionary&lt;string, object&gt;
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[],System.Threading.CancellationToken)">
<summary>
在【主库】执行
</summary>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<param name="cancellationToken"></param>
</member>
<member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.String,System.Object,System.Threading.CancellationToken)">
<summary>
在【主库】执行ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 })<para></para>
提示parms 参数还可以传 Dictionary&lt;string, object&gt;
</summary>
<param name="cmdText"></param>
<param name="parms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``1(System.Data.CommandType,System.String,System.Data.Common.DbParameter[],System.Threading.CancellationToken)">
<summary>
执行SQL返回对象集合QueryAsync&lt;User&gt;("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 })
</summary>
<typeparam name="T"></typeparam>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``1(System.String,System.Object,System.Threading.CancellationToken)">
<summary>
执行SQL返回对象集合QueryAsync&lt;User&gt;("select * from user where age > @age", new { age = 25 })<para></para>
提示parms 参数还可以传 Dictionary&lt;string, object&gt;
</summary>
<typeparam name="T"></typeparam>
<param name="cmdText"></param>
<param name="parms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``2(System.Data.CommandType,System.String,System.Data.Common.DbParameter[],System.Threading.CancellationToken)">
<summary>
执行SQL返回对象集合Query&lt;User&gt;("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
</summary>
<typeparam name="T1"></typeparam>
<typeparam name="T2"></typeparam>
<param name="cmdType"></param>
<param name="cmdText"></param>
<param name="cmdParms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="M:FreeSql.IAdo.QueryAsync``2(System.String,System.Object,System.Threading.CancellationToken)">
<summary>
执行SQL返回对象集合Query&lt;User, Address&gt;("select * from user where age > @age; select * from address", new { age = 25 })<para></para>
提示parms 参数还可以传 Dictionary&lt;string, object&gt;
</summary>
<typeparam name="T1"></typeparam>
<typeparam name="T2"></typeparam>
<param name="cmdText"></param>
<param name="parms"></param>
<param name="cancellationToken"></param>
<returns></returns>
</member>
<member name="E:FreeSql.IAop.ParseExpression"> <member name="E:FreeSql.IAop.ParseExpression">
<summary> <summary>
可自定义解析表达式 可自定义解析表达式
@ -4216,12 +4045,6 @@
<param name="timeout">超时</param> <param name="timeout">超时</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.Internal.ObjectPool.IObjectPool`1.GetAsync">
<summary>
获取资源
</summary>
<returns></returns>
</member>
<member name="M:FreeSql.Internal.ObjectPool.IObjectPool`1.Return(FreeSql.Internal.ObjectPool.Object{`0},System.Boolean)"> <member name="M:FreeSql.Internal.ObjectPool.IObjectPool`1.Return(FreeSql.Internal.ObjectPool.Object{`0},System.Boolean)">
<summary> <summary>
使用完毕后,归还资源 使用完毕后,归还资源
@ -4292,12 +4115,6 @@
</summary> </summary>
<param name="obj">资源对象</param> <param name="obj">资源对象</param>
</member> </member>
<member name="M:FreeSql.Internal.ObjectPool.IPolicy`1.OnGetAsync(FreeSql.Internal.ObjectPool.Object{`0})">
<summary>
从对象池获取对象成功的时候触发,通过该方法统计或初始化对象
</summary>
<param name="obj">资源对象</param>
</member>
<member name="M:FreeSql.Internal.ObjectPool.IPolicy`1.OnReturn(FreeSql.Internal.ObjectPool.Object{`0})"> <member name="M:FreeSql.Internal.ObjectPool.IPolicy`1.OnReturn(FreeSql.Internal.ObjectPool.Object{`0})">
<summary> <summary>
归还对象给对象池的时候触发 归还对象给对象池的时候触发

View File

@ -43,6 +43,7 @@ namespace FreeSql.Internal.CommonProvider
public Expression _selectExpression; public Expression _selectExpression;
public List<GlobalFilter.Item> _whereGlobalFilter; public List<GlobalFilter.Item> _whereGlobalFilter;
public Func<bool> _cancel; public Func<bool> _cancel;
public bool _is_AsTreeCte;
int _disposeCounter; int _disposeCounter;
~Select0Provider() ~Select0Provider()
@ -122,6 +123,7 @@ namespace FreeSql.Internal.CommonProvider
to._selectExpression = from._selectExpression; to._selectExpression = from._selectExpression;
to._whereGlobalFilter = new List<GlobalFilter.Item>(from._whereGlobalFilter.ToArray()); to._whereGlobalFilter = new List<GlobalFilter.Item>(from._whereGlobalFilter.ToArray());
to._cancel = from._cancel; to._cancel = from._cancel;
to._is_AsTreeCte = from._is_AsTreeCte;
} }
public Expression ConvertStringPropertyToExpression(string property, bool fromFirstTable = false) public Expression ConvertStringPropertyToExpression(string property, bool fromFirstTable = false)
@ -393,8 +395,11 @@ namespace FreeSql.Internal.CommonProvider
if (_params.Any()) del._params = new List<DbParameter>(_params.ToArray()); if (_params.Any()) del._params = new List<DbParameter>(_params.ToArray());
if (_whereGlobalFilter.Any()) del._whereGlobalFilter = new List<GlobalFilter.Item>(_whereGlobalFilter.ToArray()); if (_whereGlobalFilter.Any()) del._whereGlobalFilter = new List<GlobalFilter.Item>(_whereGlobalFilter.ToArray());
del.WithConnection(_connection).WithTransaction(_transaction).CommandTimeout(_commandTimeout); del.WithConnection(_connection).WithTransaction(_transaction).CommandTimeout(_commandTimeout);
if (_is_AsTreeCte == false)
{
var trytbname = ""; var trytbname = "";
del.AsTable(old => GetTableRuleUnions().FirstOrDefault()?.TryGetValue(_tables[0].Table.Type, out trytbname) == true ? trytbname : null); del.AsTable(old => GetTableRuleUnions().FirstOrDefault()?.TryGetValue(_tables[0].Table.Type, out trytbname) == true && trytbname.IndexOf(' ') == -1 ? trytbname : null);
}
switch (_orm.Ado.DataType) switch (_orm.Ado.DataType)
{ {
case DataType.Dameng: case DataType.Dameng:
@ -423,8 +428,11 @@ namespace FreeSql.Internal.CommonProvider
if (_params.Any()) upd._params = new List<DbParameter>(_params.ToArray()); if (_params.Any()) upd._params = new List<DbParameter>(_params.ToArray());
if (_whereGlobalFilter.Any()) upd._whereGlobalFilter = new List<GlobalFilter.Item>(_whereGlobalFilter.ToArray()); if (_whereGlobalFilter.Any()) upd._whereGlobalFilter = new List<GlobalFilter.Item>(_whereGlobalFilter.ToArray());
upd.WithConnection(_connection).WithTransaction(_transaction).CommandTimeout(_commandTimeout); upd.WithConnection(_connection).WithTransaction(_transaction).CommandTimeout(_commandTimeout);
if (_is_AsTreeCte == false)
{
var trytbname = ""; var trytbname = "";
upd.AsTable(old => GetTableRuleUnions().FirstOrDefault()?.TryGetValue(_tables[0].Table.Type, out trytbname) == true ? trytbname : null); upd.AsTable(old => GetTableRuleUnions().FirstOrDefault()?.TryGetValue(_tables[0].Table.Type, out trytbname) == true && trytbname.IndexOf(' ') == -1 ? trytbname : null);
}
switch (_orm.Ado.DataType) switch (_orm.Ado.DataType)
{ {
case DataType.Dameng: case DataType.Dameng: