From 4213761c6216a7f6606ce3351df01895b52f1776 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Mon, 5 Aug 2019 13:57:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=95=B0=E6=8D=AE=E6=97=B6=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20IncludeMany=20=E5=87=BA=E7=8E=B0=E5=AD=97=E5=85=B8=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=B7=BB=E5=8A=A0=E7=9A=84=20bug=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql/FreeSql.xml | 5 ++++ .../SelectProvider/Select1Provider.cs | 27 +++++++++++++------ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 6818bf46..14783b73 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -123,6 +123,11 @@ 手工绑定 ManyToMany 导航关系 + + + 主键名 + + 数据库表名 diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs index 13725c82..39313640 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs @@ -708,12 +708,16 @@ namespace FreeSql.Internal.CommonProvider return; } - Dictionary>> dicList = new Dictionary>>(); + Dictionary>>> dicList = new Dictionary>>>(); foreach (var item in list) { if (tbref.Columns.Count == 1) { - dicList.Add(getListValue(item, tbref.Columns[0].CsName, 0).ToString(), Tuple.Create(item, new List())); + var dicListKey = getListValue(item, tbref.Columns[0].CsName, 0).ToString(); + var dicListVal = Tuple.Create(item, new List()); + if (dicList.TryGetValue(dicListKey, out var items) == false) + dicList.Add(dicListKey, items = new List>>()); + items.Add(dicListVal); } else { @@ -723,7 +727,11 @@ namespace FreeSql.Internal.CommonProvider if (z > 0) sb.Append("*$*"); sb.Append(getListValue(item, tbref.Columns[z].CsName, z)); } - dicList.Add(sb.ToString(), Tuple.Create(item, new List())); + var dicListKey = sb.ToString(); + var dicListVal = Tuple.Create(item, new List()); + if (dicList.TryGetValue(dicListKey, out var items) == false) + dicList.Add(dicListKey, items = new List>>()); + items.Add(dicListVal); sb.Clear(); } } @@ -756,15 +764,18 @@ namespace FreeSql.Internal.CommonProvider key = sb.ToString(); sb.Clear(); } - if (dicList.TryGetValue(key, out var t1item) == false) return; - t1item.Item2.Add(nav); + if (dicList.TryGetValue(key, out var t1items) == false) return; + foreach (var t1item in t1items) + t1item.Item2.Add(nav); //将子集合的,多对一,对象设置为当前对象 foreach (var parentNav in parentNavs) - _orm.SetEntityValueWithPropertyName(tbref.RefMiddleEntityType, nav, parentNav, t1item.Item1); + foreach (var t1item in t1items) + _orm.SetEntityValueWithPropertyName(tbref.RefMiddleEntityType, nav, parentNav, t1item.Item1); } - foreach (var t1item in dicList.Values) - setListValue(t1item.Item1, t1item.Item2); + foreach (var t1items in dicList.Values) + foreach (var t1item in t1items) + setListValue(t1item.Item1, t1item.Item2); dicList.Clear(); } break;