mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	## v0.11.18
This commit is contained in:
		@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <TargetFrameworks>netstandard2.0</TargetFrameworks>
 | 
					    <TargetFrameworks>netstandard2.0</TargetFrameworks>
 | 
				
			||||||
    <Version>0.11.15</Version>
 | 
					    <Version>0.11.18</Version>
 | 
				
			||||||
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
					    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
    <Authors>YeXiangQin</Authors>
 | 
					    <Authors>YeXiangQin</Authors>
 | 
				
			||||||
    <Description>BaseEntity 是一种极简单的 CodeFirst 开发方式,特别对单表或多表CRUD,利用继承节省了每个实体类的重复属性(创建时间、ID等字段),软件删除等功能,进行 crud 操作时不必时常考虑仓储的使用.</Description>
 | 
					    <Description>BaseEntity 是一种极简单的 CodeFirst 开发方式,特别对单表或多表CRUD,利用继承节省了每个实体类的重复属性(创建时间、ID等字段),软件删除等功能,进行 crud 操作时不必时常考虑仓储的使用.</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
					    <TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
				
			||||||
    <Version>0.11.15</Version>
 | 
					    <Version>0.11.18</Version>
 | 
				
			||||||
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
					    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
    <Authors>YeXiangQin</Authors>
 | 
					    <Authors>YeXiangQin</Authors>
 | 
				
			||||||
    <Description>FreeSql 扩展包,可实现实体类属性为对象时,以JSON形式映射存储.</Description>
 | 
					    <Description>FreeSql 扩展包,可实现实体类属性为对象时,以JSON形式映射存储.</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
					    <TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
				
			||||||
    <Version>0.11.15</Version>
 | 
					    <Version>0.11.18</Version>
 | 
				
			||||||
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
					    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
    <Authors>YeXiangQin</Authors>
 | 
					    <Authors>YeXiangQin</Authors>
 | 
				
			||||||
    <Description>FreeSql 扩展包,可实现【延时加载】属性.</Description>
 | 
					    <Description>FreeSql 扩展包,可实现【延时加载】属性.</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,6 +92,7 @@ namespace FreeSql
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        protected List<IDbSet> _listSet = new List<IDbSet>();
 | 
					        protected List<IDbSet> _listSet = new List<IDbSet>();
 | 
				
			||||||
        protected Dictionary<Type, IDbSet> _dicSet = new Dictionary<Type, IDbSet>();
 | 
					        protected Dictionary<Type, IDbSet> _dicSet = new Dictionary<Type, IDbSet>();
 | 
				
			||||||
 | 
					        internal Dictionary<Type, IDbSet> InternalDicSet => _dicSet;
 | 
				
			||||||
        public DbSet<TEntity> Set<TEntity>() where TEntity : class => this.Set(typeof(TEntity)) as DbSet<TEntity>;
 | 
					        public DbSet<TEntity> Set<TEntity>() where TEntity : class => this.Set(typeof(TEntity)) as DbSet<TEntity>;
 | 
				
			||||||
        public virtual IDbSet Set(Type entityType)
 | 
					        public virtual IDbSet Set(Type entityType)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -105,12 +106,21 @@ namespace FreeSql
 | 
				
			|||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #region DbSet 快速代理
 | 
					        #region DbSet 快速代理
 | 
				
			||||||
 | 
					        void CheckEntityTypeOrThrow(Type entityType)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (Orm.CodeFirst.GetTableByEntity(entityType) == null)
 | 
				
			||||||
 | 
					                throw new ArgumentException($"参数 data 类型错误 {entityType.FullName} ");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 添加
 | 
					        /// 添加
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <typeparam name="TEntity"></typeparam>
 | 
					        /// <typeparam name="TEntity"></typeparam>
 | 
				
			||||||
        /// <param name="data"></param>
 | 
					        /// <param name="data"></param>
 | 
				
			||||||
        public void Add<TEntity>(TEntity data) where TEntity : class => this.Set<TEntity>().Add(data);
 | 
					        public void Add<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            this.Set<TEntity>().Add(data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public void AddRange<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().AddRange(data);
 | 
					        public void AddRange<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().AddRange(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@@ -118,7 +128,11 @@ namespace FreeSql
 | 
				
			|||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <typeparam name="TEntity"></typeparam>
 | 
					        /// <typeparam name="TEntity"></typeparam>
 | 
				
			||||||
        /// <param name="data"></param>
 | 
					        /// <param name="data"></param>
 | 
				
			||||||
        public void Update<TEntity>(TEntity data) where TEntity : class => this.Set<TEntity>().Update(data);
 | 
					        public void Update<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            this.Set<TEntity>().Update(data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public void UpdateRange<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().UpdateRange(data);
 | 
					        public void UpdateRange<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().UpdateRange(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@@ -126,7 +140,11 @@ namespace FreeSql
 | 
				
			|||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <typeparam name="TEntity"></typeparam>
 | 
					        /// <typeparam name="TEntity"></typeparam>
 | 
				
			||||||
        /// <param name="data"></param>
 | 
					        /// <param name="data"></param>
 | 
				
			||||||
        public void Remove<TEntity>(TEntity data) where TEntity : class => this.Set<TEntity>().Remove(data);
 | 
					        public void Remove<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            this.Set<TEntity>().Remove(data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public void RemoveRange<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().RemoveRange(data);
 | 
					        public void RemoveRange<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().RemoveRange(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@@ -134,21 +152,32 @@ namespace FreeSql
 | 
				
			|||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <typeparam name="TEntity"></typeparam>
 | 
					        /// <typeparam name="TEntity"></typeparam>
 | 
				
			||||||
        /// <param name="data"></param>
 | 
					        /// <param name="data"></param>
 | 
				
			||||||
        public void AddOrUpdate<TEntity>(TEntity data) where TEntity : class => this.Set<TEntity>().AddOrUpdate(data);
 | 
					        public void AddOrUpdate<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            this.Set<TEntity>().AddOrUpdate(data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 保存实体的指定 ManyToMany 导航属性
 | 
					        /// 保存实体的指定 ManyToMany 导航属性
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <param name="data">实体对象</param>
 | 
					        /// <param name="data">实体对象</param>
 | 
				
			||||||
        /// <param name="propertyName">属性名</param>
 | 
					        /// <param name="propertyName">属性名</param>
 | 
				
			||||||
        public void SaveManyToMany<TEntity>(TEntity data, string propertyName) where TEntity : class => this.Set<TEntity>().SaveManyToMany(data, propertyName);
 | 
					        public void SaveManyToMany<TEntity>(TEntity data, string propertyName) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            this.Set<TEntity>().SaveManyToMany(data, propertyName);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 附加实体,可用于不查询就更新或删除
 | 
					        /// 附加实体,可用于不查询就更新或删除
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <typeparam name="TEntity"></typeparam>
 | 
					        /// <typeparam name="TEntity"></typeparam>
 | 
				
			||||||
        /// <param name="data"></param>
 | 
					        /// <param name="data"></param>
 | 
				
			||||||
        public void Attach<TEntity>(TEntity data) where TEntity : class => this.Set<TEntity>().Attach(data);
 | 
					        public void Attach<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            this.Set<TEntity>().Attach(data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public void AttachRange<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().AttachRange(data);
 | 
					        public void AttachRange<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().AttachRange(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@@ -158,19 +187,36 @@ namespace FreeSql
 | 
				
			|||||||
        /// <param name="data"></param>
 | 
					        /// <param name="data"></param>
 | 
				
			||||||
        public DbContext AttachOnlyPrimary<TEntity>(TEntity data) where TEntity : class
 | 
					        public DbContext AttachOnlyPrimary<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
            this.Set<TEntity>().AttachOnlyPrimary(data);
 | 
					            this.Set<TEntity>().AttachOnlyPrimary(data);
 | 
				
			||||||
            return this;
 | 
					            return this;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
#if net40
 | 
					#if net40
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
        public Task AddAsync<TEntity>(TEntity data) where TEntity : class => this.Set<TEntity>().AddAsync(data);
 | 
					        public Task AddAsync<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            return this.Set<TEntity>().AddAsync(data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public Task AddRangeAsync<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().AddRangeAsync(data);
 | 
					        public Task AddRangeAsync<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().AddRangeAsync(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Task UpdateAsync<TEntity>(TEntity data) where TEntity : class => this.Set<TEntity>().UpdateAsync(data);
 | 
					        public Task UpdateAsync<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            return this.Set<TEntity>().UpdateAsync(data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public Task UpdateRangeAsync<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().UpdateRangeAsync(data);
 | 
					        public Task UpdateRangeAsync<TEntity>(IEnumerable<TEntity> data) where TEntity : class => this.Set<TEntity>().UpdateRangeAsync(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Task AddOrUpdateAsync<TEntity>(TEntity data) where TEntity : class => this.Set<TEntity>().AddOrUpdateAsync(data);
 | 
					        public Task AddOrUpdateAsync<TEntity>(TEntity data) where TEntity : class
 | 
				
			||||||
        public Task SaveManyToManyAsync<TEntity>(TEntity data, string propertyName) where TEntity : class => this.Set<TEntity>().SaveManyToManyAsync(data, propertyName);
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            return this.Set<TEntity>().AddOrUpdateAsync(data);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public Task SaveManyToManyAsync<TEntity>(TEntity data, string propertyName) where TEntity : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CheckEntityTypeOrThrow(typeof(TEntity));
 | 
				
			||||||
 | 
					            return this.Set<TEntity>().SaveManyToManyAsync(data, propertyName);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -133,8 +133,17 @@ namespace FreeSql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (_dicDbSetObjects.TryGetValue(et, out var tryds)) return tryds;
 | 
					            if (_dicDbSetObjects.TryGetValue(et, out var tryds)) return tryds;
 | 
				
			||||||
            _dicDbSetObjects.Add(et, tryds = _db.Set<object>().AsType(et));
 | 
					            _dicDbSetObjects.Add(et, tryds = _db.Set<object>().AsType(et));
 | 
				
			||||||
 | 
					            if (_db.InternalDicSet.TryGetValue(et, out var tryds2))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var copyTo = typeof(DbSet<>).MakeGenericType(et).GetMethod("StatesCopyToDbSetObject", BindingFlags.NonPublic | BindingFlags.Instance, null, new[] { typeof(DbSet<object>) }, null);
 | 
				
			||||||
 | 
					                copyTo?.Invoke(tryds2, new object[] { tryds });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            return tryds;
 | 
					            return tryds;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        void StatesCopyToDbSetObject(DbSet<object> ds)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ds.AttachRange(_states.Values.OrderBy(a => a.Time).Select(a => a.Value).ToArray());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class EntityState
 | 
					        public class EntityState
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
					    <TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
				
			||||||
    <Version>0.11.15</Version>
 | 
					    <Version>0.11.18</Version>
 | 
				
			||||||
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
					    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
    <Authors>YeXiangQin</Authors>
 | 
					    <Authors>YeXiangQin</Authors>
 | 
				
			||||||
    <Description>FreeSql is the most convenient ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, And Odbc.</Description>
 | 
					    <Description>FreeSql is the most convenient ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, And Odbc.</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -106,6 +106,13 @@
 | 
				
			|||||||
            清空状态数据
 | 
					            清空状态数据
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            根据 lambda 条件删除数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="predicate"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.DbSet`1.Add(`0)">
 | 
					        <member name="M:FreeSql.DbSet`1.Add(`0)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            添加
 | 
					            添加
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
					    <TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
				
			||||||
    <Version>0.11.15</Version>
 | 
					    <Version>0.11.18</Version>
 | 
				
			||||||
    <Authors>YeXiangQin</Authors>
 | 
					    <Authors>YeXiangQin</Authors>
 | 
				
			||||||
    <Description>FreeSql Implementation of General Repository, Support MySql/SqlServer/PostgreSQL/Oracle/Sqlite, and read/write separation、and split table.</Description>
 | 
					    <Description>FreeSql Implementation of General Repository, Support MySql/SqlServer/PostgreSQL/Oracle/Sqlite, and read/write separation、and split table.</Description>
 | 
				
			||||||
    <PackageProjectUrl>https://github.com/2881099/FreeSql/wiki/Repository</PackageProjectUrl>
 | 
					    <PackageProjectUrl>https://github.com/2881099/FreeSql/wiki/Repository</PackageProjectUrl>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<PropertyGroup>
 | 
						<PropertyGroup>
 | 
				
			||||||
		<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
							<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
				
			||||||
		<Version>0.11.15</Version>
 | 
							<Version>0.11.18</Version>
 | 
				
			||||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
							<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
		<Authors>YeXiangQin</Authors>
 | 
							<Authors>YeXiangQin</Authors>
 | 
				
			||||||
		<Description>FreeSql is the most convenient ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, And Odbc.</Description>
 | 
							<Description>FreeSql is the most convenient ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, And Odbc.</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1996,137 +1996,6 @@
 | 
				
			|||||||
            <param name="parms"></param>
 | 
					            <param name="parms"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{System.Data.Common.DbDataReader,System.Threading.Tasks.Task},System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="readerHander"></param>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{System.Data.Common.DbDataReader,System.Threading.Tasks.Task},System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,ExecuteArrayAsync("select * from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,ExecuteDataSetAsync("select * from user where age > @age; select 2", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            查询,ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            在【主库】执行
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            在【主库】执行,ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            在【主库】执行
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            在【主库】执行,ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.QueryAsync``1(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL返回对象集合,QueryAsync<User>("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>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.QueryAsync``1(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <typeparam name="T"></typeparam>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.QueryAsync``2(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <typeparam name="T1"></typeparam>
 | 
					 | 
				
			||||||
            <param name="cmdType"></param>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="cmdParms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.IAdo.QueryAsync``2(System.String,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new { age = 25 })
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <typeparam name="T1"></typeparam>
 | 
					 | 
				
			||||||
            <param name="cmdText"></param>
 | 
					 | 
				
			||||||
            <param name="parms"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.ParseExpression">
 | 
					        <member name="P:FreeSql.IAop.ParseExpression">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            可自定义解析表达式
 | 
					            可自定义解析表达式
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<PropertyGroup>
 | 
						<PropertyGroup>
 | 
				
			||||||
		<TargetFrameworks>netstandard2.0;net452;net451;net45;net40</TargetFrameworks>
 | 
							<TargetFrameworks>netstandard2.0;net452;net451;net45;net40</TargetFrameworks>
 | 
				
			||||||
		<Version>0.11.15</Version>
 | 
							<Version>0.11.18</Version>
 | 
				
			||||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
							<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
		<Authors>YeXiangQin</Authors>
 | 
							<Authors>YeXiangQin</Authors>
 | 
				
			||||||
		<Description>FreeSql 数据库实现,基于 MySql 5.6</Description>
 | 
							<Description>FreeSql 数据库实现,基于 MySql 5.6</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<PropertyGroup>
 | 
						<PropertyGroup>
 | 
				
			||||||
		<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
 | 
							<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
 | 
				
			||||||
		<Version>0.11.15</Version>
 | 
							<Version>0.11.18</Version>
 | 
				
			||||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
							<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
		<Authors>YeXiangQin</Authors>
 | 
							<Authors>YeXiangQin</Authors>
 | 
				
			||||||
		<Description>FreeSql 数据库实现,基于 MySql 5.6</Description>
 | 
							<Description>FreeSql 数据库实现,基于 MySql 5.6</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<PropertyGroup>
 | 
						<PropertyGroup>
 | 
				
			||||||
		<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
							<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
				
			||||||
		<Version>0.11.15</Version>
 | 
							<Version>0.11.18</Version>
 | 
				
			||||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
							<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
		<Authors>YeXiangQin</Authors>
 | 
							<Authors>YeXiangQin</Authors>
 | 
				
			||||||
		<Description>FreeSql 数据库 Odbc 实现,基于 {Oracle}、{SQL Server}、{MySQL ODBC 8.0 Unicode Driver}、{PostgreSQL Unicode(x64)} 专用访问实现,以及通用 Odbc 访问所有数据库</Description>
 | 
							<Description>FreeSql 数据库 Odbc 实现,基于 {Oracle}、{SQL Server}、{MySQL ODBC 8.0 Unicode Driver}、{PostgreSQL Unicode(x64)} 专用访问实现,以及通用 Odbc 访问所有数据库</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<PropertyGroup>
 | 
						<PropertyGroup>
 | 
				
			||||||
		<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
							<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
				
			||||||
		<Version>0.11.15</Version>
 | 
							<Version>0.11.18</Version>
 | 
				
			||||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
							<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
		<Authors>YeXiangQin</Authors>
 | 
							<Authors>YeXiangQin</Authors>
 | 
				
			||||||
		<Description>FreeSql 数据库实现,基于 Oracle 11</Description>
 | 
							<Description>FreeSql 数据库实现,基于 Oracle 11</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<PropertyGroup>
 | 
						<PropertyGroup>
 | 
				
			||||||
		<TargetFrameworks>netstandard2.0;net461;net452;net451;net45</TargetFrameworks>
 | 
							<TargetFrameworks>netstandard2.0;net461;net452;net451;net45</TargetFrameworks>
 | 
				
			||||||
		<Version>0.11.15</Version>
 | 
							<Version>0.11.18</Version>
 | 
				
			||||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
							<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
		<Authors>YeXiangQin</Authors>
 | 
							<Authors>YeXiangQin</Authors>
 | 
				
			||||||
		<Description>FreeSql 数据库实现,基于 PostgreSQL 9.5</Description>
 | 
							<Description>FreeSql 数据库实现,基于 PostgreSQL 9.5</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<PropertyGroup>
 | 
						<PropertyGroup>
 | 
				
			||||||
		<TargetFrameworks>netstandard2.0;net451;net45;net40</TargetFrameworks>
 | 
							<TargetFrameworks>netstandard2.0;net451;net45;net40</TargetFrameworks>
 | 
				
			||||||
		<Version>0.11.15</Version>
 | 
							<Version>0.11.18</Version>
 | 
				
			||||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
							<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
		<Authors>YeXiangQin</Authors>
 | 
							<Authors>YeXiangQin</Authors>
 | 
				
			||||||
		<Description>FreeSql 数据库实现,基于 SqlServer 2005+,并根据版本适配分页方法:row_number 或 offset fetch next</Description>
 | 
							<Description>FreeSql 数据库实现,基于 SqlServer 2005+,并根据版本适配分页方法:row_number 或 offset fetch next</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<PropertyGroup>
 | 
						<PropertyGroup>
 | 
				
			||||||
		<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
							<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
 | 
				
			||||||
		<Version>0.11.15</Version>
 | 
							<Version>0.11.18</Version>
 | 
				
			||||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
							<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
				
			||||||
		<Authors>YeXiangQin</Authors>
 | 
							<Authors>YeXiangQin</Authors>
 | 
				
			||||||
		<Description>FreeSql 数据库实现,基于 Sqlite 3.0,支持 .NetCore、.NetFramework、Xamarin</Description>
 | 
							<Description>FreeSql 数据库实现,基于 Sqlite 3.0,支持 .NetCore、.NetFramework、Xamarin</Description>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user