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;