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); };