mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	- 修复 ISelect ToList<T>("id,title") 属性和字段顺序不同时的问题;
This commit is contained in:
		@@ -130,13 +130,6 @@
 | 
				
			|||||||
            清空状态数据
 | 
					            清空状态数据
 | 
				
			||||||
            </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>
 | 
				
			||||||
            添加
 | 
					            添加
 | 
				
			||||||
@@ -532,14 +525,5 @@
 | 
				
			|||||||
            <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>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,6 +73,42 @@ namespace FreeSql.Tests.PerformanceTest
 | 
				
			|||||||
            time.Stop();
 | 
					            time.Stop();
 | 
				
			||||||
            sb.AppendLine($"Elapsed: {time.Elapsed}; Query Dynamic Counts: {t3.Count}; ORM: FreeSql*");
 | 
					            sb.AppendLine($"Elapsed: {time.Elapsed}; Query Dynamic Counts: {t3.Count}; ORM: FreeSql*");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var t411 = g.mysql.Select<xxx>().Limit(1).ToList<xxx_dto1>("id,title,url").FirstOrDefault();
 | 
				
			||||||
 | 
					            var t412 = g.mysql.Select<xxx>().Limit(1).Where(a => a.Id == t411.Id).ToList<xxx_dto1>("id,url,title").FirstOrDefault();
 | 
				
			||||||
 | 
					            var t413 = g.mysql.Select<xxx>().Limit(1).Where(a => a.Id == t411.Id).ToList<xxx_dto2>("id,title,url").FirstOrDefault();
 | 
				
			||||||
 | 
					            var t414 = g.mysql.Select<xxx>().Limit(1).Where(a => a.Id == t411.Id).ToList<xxx_dto2>("id,url,title").FirstOrDefault();
 | 
				
			||||||
 | 
					            var t415 = g.mysql.Select<xxx>().Limit(1).Where(a => a.Id == t411.Id).ToList<xxx_dto2>("url,title,id").FirstOrDefault();
 | 
				
			||||||
 | 
					            var t416 = g.mysql.Select<xxx>().Limit(1).Where(a => a.Id == t411.Id).ToList<xxx_dto2>("title,url,id").FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal(t411.Title, t412.Title);
 | 
				
			||||||
 | 
					            Assert.Equal(t412.Title, t413.Title);
 | 
				
			||||||
 | 
					            Assert.Equal(t413.Title, t414.Title);
 | 
				
			||||||
 | 
					            Assert.Equal(t414.Title, t415.Title);
 | 
				
			||||||
 | 
					            Assert.Equal(t415.Title, t416.Title);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal(t411.Url, t412.Url);
 | 
				
			||||||
 | 
					            Assert.Equal(t412.Url, t413.Url);
 | 
				
			||||||
 | 
					            Assert.Equal(t413.Url, t414.Url);
 | 
				
			||||||
 | 
					            Assert.Equal(t414.Url, t415.Url);
 | 
				
			||||||
 | 
					            Assert.Equal(t415.Url, t416.Url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal(t411.Id, t412.Id);
 | 
				
			||||||
 | 
					            Assert.Equal(t412.Id, t413.Id);
 | 
				
			||||||
 | 
					            Assert.Equal(t413.Id, t414.Id);
 | 
				
			||||||
 | 
					            Assert.Equal(t414.Id, t415.Id);
 | 
				
			||||||
 | 
					            Assert.Equal(t415.Id, t416.Id);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        class xxx_dto1
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            public int Id { get; set; }
 | 
				
			||||||
 | 
					            public string Title { get; set; }
 | 
				
			||||||
 | 
					            public string Url { get; set; }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        class xxx_dto2
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            public int Id { get; set; }
 | 
				
			||||||
 | 
					            public string Url { get; set; }
 | 
				
			||||||
 | 
					            public string Title { get; set; }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,15 +52,20 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
 | 
					            var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
 | 
				
			||||||
            _orm.Aop.CurdBeforeHandler?.Invoke(this, before);
 | 
					            _orm.Aop.CurdBeforeHandler?.Invoke(this, before);
 | 
				
			||||||
            var ret = new List<TTuple>();
 | 
					            var ret = new List<TTuple>();
 | 
				
			||||||
            var flagStr = $"ToListField:{field}";
 | 
					 | 
				
			||||||
            Exception exception = null;
 | 
					            Exception exception = null;
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                _orm.Ado.ExecuteReader(_connection, _transaction, fetch =>
 | 
					                if (type.IsClass)
 | 
				
			||||||
 | 
					                    ret = _orm.Ado.Query<TTuple>(_connection, _transaction, CommandType.Text, sql, dbParms);
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var read = Utils.ExecuteArrayRowReadClassOrTuple(flagStr, type, null, fetch.Object, 0, _commonUtils);
 | 
					                    var flagStr = $"ToListField:{field}";
 | 
				
			||||||
                    ret.Add((TTuple)read.Value);
 | 
					                    _orm.Ado.ExecuteReader(_connection, _transaction, fetch =>
 | 
				
			||||||
                }, CommandType.Text, sql, dbParms);
 | 
					                    {
 | 
				
			||||||
 | 
					                        var read = Utils.ExecuteArrayRowReadClassOrTuple(flagStr, type, null, fetch.Object, 0, _commonUtils);
 | 
				
			||||||
 | 
					                        ret.Add((TTuple)read.Value);
 | 
				
			||||||
 | 
					                    }, CommandType.Text, sql, dbParms);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -748,16 +753,21 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
 | 
					            var before = new Aop.CurdBeforeEventArgs(_tables[0].Table.Type, _tables[0].Table, Aop.CurdType.Select, sql, dbParms);
 | 
				
			||||||
            _orm.Aop.CurdBeforeHandler?.Invoke(this, before);
 | 
					            _orm.Aop.CurdBeforeHandler?.Invoke(this, before);
 | 
				
			||||||
            var ret = new List<TTuple>();
 | 
					            var ret = new List<TTuple>();
 | 
				
			||||||
            var flagStr = $"ToListField:{field}";
 | 
					 | 
				
			||||||
            Exception exception = null;
 | 
					            Exception exception = null;
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, fetch =>
 | 
					                if (type.IsClass)
 | 
				
			||||||
 | 
					                    ret = await _orm.Ado.QueryAsync<TTuple>(_connection, _transaction, CommandType.Text, sql, dbParms);
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var read = Utils.ExecuteArrayRowReadClassOrTuple(flagStr, type, null, fetch.Object, 0, _commonUtils);
 | 
					                    var flagStr = $"ToListField:{field}";
 | 
				
			||||||
                    ret.Add((TTuple)read.Value);
 | 
					                    await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, fetch =>
 | 
				
			||||||
                    return Task.FromResult(false);
 | 
					                    {
 | 
				
			||||||
                }, CommandType.Text, sql, dbParms);
 | 
					                        var read = Utils.ExecuteArrayRowReadClassOrTuple(flagStr, type, null, fetch.Object, 0, _commonUtils);
 | 
				
			||||||
 | 
					                        ret.Add((TTuple)read.Value);
 | 
				
			||||||
 | 
					                        return Task.FromResult(false);
 | 
				
			||||||
 | 
					                    }, CommandType.Text, sql, dbParms);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -187,7 +187,8 @@ QQ群:4336577(已满)、8578575(在线)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## 💕  Donation
 | 
					## 💕  Donation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
L*y 58元、花花 88元、麦兜很乖 50元、网络来者 2000元、John 99.99元、alex 666元、bacongao 36元、无名 100元、Eternity 188元、无名 10元、⌒.Helper~..oO 66元、习惯与被习惯 100元、无名 100元、蔡易喋 88.88元、中讯科技 1000元、Good Good Work 24元、炽焰 6.6元、Nothing 100元、兰州天擎赵 500元、哈利路亚 300元
 | 
					L*y 58元、花花 88元、麦兜很乖 50元、网络来者 2000元、John 99.99元、alex 666元、bacongao 36元、无名 100元、Eternity 188元、无名 10元、⌒.Helper~..oO 66元、习惯与被习惯 100元、无名 100元、蔡易喋 88.88元、中讯科技 1000元、Good Good Work 24元、炽焰 6.6元、Nothing 100元、兰州天擎赵 500元、哈利路亚 300元、
 | 
				
			||||||
 | 
					无名 100元
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> Thank you for your donation
 | 
					> Thank you for your donation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user