From 113a5d3092b6a9208b6dd3a525c47167b7eab7ea Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Mon, 17 Aug 2020 22:05:05 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20ISelect=20ToList("i?= =?UTF-8?q?d,title")=20=E5=B1=9E=E6=80=A7=E5=92=8C=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E4=B8=8D=E5=90=8C=E6=97=B6=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.DbContext/FreeSql.DbContext.xml | 16 --------- .../MySqlAdoTest.cs | 36 +++++++++++++++++++ .../SelectProvider/Select0ProviderReader.cs | 32 +++++++++++------ readme.md | 3 +- 4 files changed, 59 insertions(+), 28 deletions(-) diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 312b0c42..68241282 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -130,13 +130,6 @@ 清空状态数据 - - - 根据 lambda 条件删除数据 - - - - 添加 @@ -532,14 +525,5 @@ - - - 批量注入 Repository,可以参考代码自行调整 - - - - - - diff --git a/FreeSql.Tests/FreeSql.Tests.PerformanceTests/MySqlAdoTest.cs b/FreeSql.Tests/FreeSql.Tests.PerformanceTests/MySqlAdoTest.cs index 85056d7b..151f01da 100644 --- a/FreeSql.Tests/FreeSql.Tests.PerformanceTests/MySqlAdoTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.PerformanceTests/MySqlAdoTest.cs @@ -73,6 +73,42 @@ namespace FreeSql.Tests.PerformanceTest time.Stop(); sb.AppendLine($"Elapsed: {time.Elapsed}; Query Dynamic Counts: {t3.Count}; ORM: FreeSql*"); + var t411 = g.mysql.Select().Limit(1).ToList("id,title,url").FirstOrDefault(); + var t412 = g.mysql.Select().Limit(1).Where(a => a.Id == t411.Id).ToList("id,url,title").FirstOrDefault(); + var t413 = g.mysql.Select().Limit(1).Where(a => a.Id == t411.Id).ToList("id,title,url").FirstOrDefault(); + var t414 = g.mysql.Select().Limit(1).Where(a => a.Id == t411.Id).ToList("id,url,title").FirstOrDefault(); + var t415 = g.mysql.Select().Limit(1).Where(a => a.Id == t411.Id).ToList("url,title,id").FirstOrDefault(); + var t416 = g.mysql.Select().Limit(1).Where(a => a.Id == t411.Id).ToList("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] diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs index 113c8554..4ff5160c 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs @@ -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); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); var ret = new List(); - var flagStr = $"ToListField:{field}"; Exception exception = null; try { - _orm.Ado.ExecuteReader(_connection, _transaction, fetch => + if (type.IsClass) + ret = _orm.Ado.Query(_connection, _transaction, CommandType.Text, sql, dbParms); + else { - var read = Utils.ExecuteArrayRowReadClassOrTuple(flagStr, type, null, fetch.Object, 0, _commonUtils); - ret.Add((TTuple)read.Value); - }, CommandType.Text, sql, dbParms); + var flagStr = $"ToListField:{field}"; + _orm.Ado.ExecuteReader(_connection, _transaction, fetch => + { + var read = Utils.ExecuteArrayRowReadClassOrTuple(flagStr, type, null, fetch.Object, 0, _commonUtils); + ret.Add((TTuple)read.Value); + }, CommandType.Text, sql, dbParms); + } } 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); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); var ret = new List(); - var flagStr = $"ToListField:{field}"; Exception exception = null; try { - await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, fetch => + if (type.IsClass) + ret = await _orm.Ado.QueryAsync(_connection, _transaction, CommandType.Text, sql, dbParms); + else { - var read = Utils.ExecuteArrayRowReadClassOrTuple(flagStr, type, null, fetch.Object, 0, _commonUtils); - ret.Add((TTuple)read.Value); - return Task.FromResult(false); - }, CommandType.Text, sql, dbParms); + var flagStr = $"ToListField:{field}"; + await _orm.Ado.ExecuteReaderAsync(_connection, _transaction, fetch => + { + 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) { diff --git a/readme.md b/readme.md index ff4a56b6..a6db0eb8 100644 --- a/readme.md +++ b/readme.md @@ -187,7 +187,8 @@ QQ群:4336577(已满)、8578575(在线) ## 💕  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