mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	微调
This commit is contained in:
		@@ -252,7 +252,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
				
			|||||||
			return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
 | 
								return _orm.Cache.Shell(_cache.key, _cache.seconds, () => {
 | 
				
			||||||
				List<T1> ret = new List<T1>();
 | 
									List<T1> ret = new List<T1>();
 | 
				
			||||||
				_orm.Ado.ExecuteReader(_transaction, dr => {
 | 
									_orm.Ado.ExecuteReader(_transaction, dr => {
 | 
				
			||||||
					ret.Add(af.Read(dr));
 | 
										ret.Add(af.Read(_orm, dr));
 | 
				
			||||||
				}, CommandType.Text, sql, _params.ToArray());
 | 
									}, CommandType.Text, sql, _params.ToArray());
 | 
				
			||||||
				_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
 | 
									_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
 | 
				
			||||||
				_trackToList?.Invoke(ret);
 | 
									_trackToList?.Invoke(ret);
 | 
				
			||||||
@@ -267,7 +267,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
				
			|||||||
			return await _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
 | 
								return await _orm.Cache.ShellAsync(_cache.key, _cache.seconds, async () => {
 | 
				
			||||||
				List<T1> ret = new List<T1>();
 | 
									List<T1> ret = new List<T1>();
 | 
				
			||||||
				await _orm.Ado.ExecuteReaderAsync(_transaction, dr => {
 | 
									await _orm.Ado.ExecuteReaderAsync(_transaction, dr => {
 | 
				
			||||||
					ret.Add(af.Read(dr));
 | 
										ret.Add(af.Read(_orm, dr));
 | 
				
			||||||
					return Task.CompletedTask;
 | 
										return Task.CompletedTask;
 | 
				
			||||||
				}, CommandType.Text, sql, _params.ToArray());
 | 
									}, CommandType.Text, sql, _params.ToArray());
 | 
				
			||||||
				_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
 | 
									_orm.Aop.ToList?.Invoke(this, new AopToListEventArgs(ret));
 | 
				
			||||||
@@ -332,7 +332,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
				
			|||||||
		static ConcurrentDictionary<string, GetAllFieldExpressionTreeInfo> _dicGetAllFieldExpressionTree = new ConcurrentDictionary<string, GetAllFieldExpressionTreeInfo>();
 | 
							static ConcurrentDictionary<string, GetAllFieldExpressionTreeInfo> _dicGetAllFieldExpressionTree = new ConcurrentDictionary<string, GetAllFieldExpressionTreeInfo>();
 | 
				
			||||||
		public class GetAllFieldExpressionTreeInfo {
 | 
							public class GetAllFieldExpressionTreeInfo {
 | 
				
			||||||
			public string Field { get; set; }
 | 
								public string Field { get; set; }
 | 
				
			||||||
			public Func<DbDataReader, T1> Read { get; set; }
 | 
								public Func<IFreeSql, DbDataReader, T1> Read { get; set; }
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		protected GetAllFieldExpressionTreeInfo GetAllFieldExpressionTree() {
 | 
							protected GetAllFieldExpressionTreeInfo GetAllFieldExpressionTree() {
 | 
				
			||||||
			return _dicGetAllFieldExpressionTree.GetOrAdd(string.Join("+", _tables.Select(a => $"{_orm.Ado.DataType}-{a.Table.DbName}-{a.Alias}-{a.Type}")), s => {
 | 
								return _dicGetAllFieldExpressionTree.GetOrAdd(string.Join("+", _tables.Select(a => $"{_orm.Ado.DataType}-{a.Table.DbName}-{a.Alias}-{a.Type}")), s => {
 | 
				
			||||||
@@ -340,6 +340,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
				
			|||||||
				var type = tb1.TypeLazy ?? tb1.Type;
 | 
									var type = tb1.TypeLazy ?? tb1.Type;
 | 
				
			||||||
				var props = tb1.Properties;
 | 
									var props = tb1.Properties;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									var ormExp = Expression.Parameter(typeof(IFreeSql), "orm");
 | 
				
			||||||
				var rowExp = Expression.Parameter(typeof(DbDataReader), "row");
 | 
									var rowExp = Expression.Parameter(typeof(DbDataReader), "row");
 | 
				
			||||||
				var returnTarget = Expression.Label(type);
 | 
									var returnTarget = Expression.Label(type);
 | 
				
			||||||
				var retExp = Expression.Variable(type, "ret");
 | 
									var retExp = Expression.Variable(type, "ret");
 | 
				
			||||||
@@ -435,7 +436,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
				
			|||||||
					blockExp.Add(
 | 
										blockExp.Add(
 | 
				
			||||||
						Expression.IfThen(
 | 
											Expression.IfThen(
 | 
				
			||||||
							Expression.NotEqual(readExpValue, Expression.Constant(null)),
 | 
												Expression.NotEqual(readExpValue, Expression.Constant(null)),
 | 
				
			||||||
							Expression.Call(retExp, tb1.TypeLazySetOrm, Expression.Constant(_orm))
 | 
												Expression.Call(retExp, tb1.TypeLazySetOrm, ormExp)
 | 
				
			||||||
						)
 | 
											)
 | 
				
			||||||
					); //将 orm 传递给 lazy
 | 
										); //将 orm 传递给 lazy
 | 
				
			||||||
				blockExp.AddRange(new Expression[] {
 | 
									blockExp.AddRange(new Expression[] {
 | 
				
			||||||
@@ -444,7 +445,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
				
			|||||||
				});
 | 
									});
 | 
				
			||||||
				return new GetAllFieldExpressionTreeInfo {
 | 
									return new GetAllFieldExpressionTreeInfo {
 | 
				
			||||||
					Field = field.ToString(),
 | 
										Field = field.ToString(),
 | 
				
			||||||
					Read = Expression.Lambda<Func<DbDataReader, T1>>(Expression.Block(new[] { retExp, dataIndexExp, readExp }, blockExp), new[] { rowExp }).Compile()
 | 
										Read = Expression.Lambda<Func<IFreeSql, DbDataReader, T1>>(Expression.Block(new[] { retExp, dataIndexExp, readExp }, blockExp), new[] { ormExp, rowExp }).Compile()
 | 
				
			||||||
				};
 | 
									};
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user