From f8e4e271132acb306b458c19dc76e918cdbb2a09 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Fri, 3 Jan 2020 12:33:19 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20IAdo.Query\?= =?UTF-8?q?=20=E5=AD=97=E6=AE=B5=E5=90=8D=E9=87=8D=E5=A4=8D=E7=9A=84=20bug?= =?UTF-8?q?=EF=BC=9B#162?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.Tests/FreeSql.Tests/UnitTest3.cs | 24 ++++++++++++++++++++++++ FreeSql/Internal/UtilsExpressionTree.cs | 8 ++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs index ee8ef69de..36f6ae2a9 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest3.cs @@ -84,6 +84,17 @@ public void Test03() fsql = ib.Get("db3"); fsql.Select().Limit(10).ToList(); + + fsql = g.sqlserver; + fsql.Insert(new OrderMain { OrderNo = "1001", OrderTime = new DateTime(2019, 12, 01) }).ExecuteAffrows(); + fsql.Insert(new OrderDetail { OrderNo = "1001", ItemNo = "I001", Qty = 1 }).ExecuteAffrows(); + fsql.Insert(new OrderDetail { OrderNo = "1001", ItemNo = "I002", Qty = 1 }).ExecuteAffrows(); + fsql.Insert(new OrderDetail { OrderNo = "1001", ItemNo = "I003", Qty = 1 }).ExecuteAffrows(); + fsql.Insert(new OrderMain { OrderNo = "1002", OrderTime = new DateTime(2019, 12, 02) }).ExecuteAffrows(); + fsql.Insert(new OrderDetail { OrderNo = "1002", ItemNo = "I011", Qty = 1 }).ExecuteAffrows(); + fsql.Insert(new OrderDetail { OrderNo = "1002", ItemNo = "I012", Qty = 1 }).ExecuteAffrows(); + fsql.Insert(new OrderDetail { OrderNo = "1002", ItemNo = "I013", Qty = 1 }).ExecuteAffrows(); + fsql.Ado.Query("select * from orderdetail left join ordermain on orderdetail.orderno=ordermain.orderno where ordermain.orderno='1001'"); } class TestByte @@ -106,6 +117,19 @@ class ut3_t2 public int id { get; set; } public string name { get; set; } } + + public class OrderMain + { + public string OrderNo { get; set; } + public DateTime OrderTime { get; set; } + public decimal Amount { get; set; } + } + public class OrderDetail + { + public string OrderNo { get; set; } + public string ItemNo { get; set; } + public decimal Qty { get; set; } + } } } diff --git a/FreeSql/Internal/UtilsExpressionTree.cs b/FreeSql/Internal/UtilsExpressionTree.cs index 8c8631c1e..b35b342f6 100644 --- a/FreeSql/Internal/UtilsExpressionTree.cs +++ b/FreeSql/Internal/UtilsExpressionTree.cs @@ -1331,8 +1331,12 @@ internal static RowInfo ExecuteArrayRowReadClassOrTuple(string flagStr, Type typ var expandodic = new Dictionary();// (IDictionary)expando; var fc = row2.FieldCount; for (var a = 0; a < fc; a++) - //expando[row2.GetName(a)] = row2.GetValue(a); - expandodic.Add(row2.GetName(a), row2.GetValue(a)); + { + var name = row2.GetName(a); + //expando[name] = row2.GetValue(a); + if (expandodic.ContainsKey(name)) continue; + expandodic.Add(name, row2.GetValue(a)); + } //expando = expandodic; return new RowInfo(expandodic, fc); };