- 优化 EnableAddOrUpdateNavigate 逻辑;

This commit is contained in:
2881099 2022-05-04 18:50:35 +08:00
parent 1090de14ef
commit a80d2cdf9d
4 changed files with 10 additions and 4 deletions

View File

@ -328,6 +328,7 @@ namespace FreeSql
} }
break; break;
case Internal.Model.TableRefType.OneToMany: case Internal.Model.TableRefType.OneToMany:
var addlist = isAdd ? new List<object>() : null;
foreach (var propValItem in propValEach) foreach (var propValItem in propValEach)
{ {
for (var colidx = 0; colidx < tref.Columns.Count; colidx++) for (var colidx = 0; colidx < tref.Columns.Count; colidx++)
@ -335,8 +336,10 @@ namespace FreeSql
var val = FreeSql.Internal.Utils.GetDataReaderValue(tref.RefColumns[colidx].CsType, _db.OrmOriginal.GetEntityValueWithPropertyName(_table.Type, item, tref.Columns[colidx].CsName)); var val = FreeSql.Internal.Utils.GetDataReaderValue(tref.RefColumns[colidx].CsType, _db.OrmOriginal.GetEntityValueWithPropertyName(_table.Type, item, tref.Columns[colidx].CsName));
_db.OrmOriginal.SetEntityValueWithPropertyName(tref.RefEntityType, propValItem, tref.RefColumns[colidx].CsName, val); _db.OrmOriginal.SetEntityValueWithPropertyName(tref.RefEntityType, propValItem, tref.RefColumns[colidx].CsName, val);
} }
await refSet.AddOrUpdateAsync(propValItem, cancellationToken); if (isAdd) addlist.Add(propValItem);
else await refSet.AddOrUpdateAsync(propValItem, cancellationToken);
} }
if (isAdd) await refSet.AddRangeAsync(addlist, cancellationToken);
break; break;
} }
}; };

View File

@ -339,6 +339,7 @@ namespace FreeSql
} }
break; break;
case Internal.Model.TableRefType.OneToMany: case Internal.Model.TableRefType.OneToMany:
var addlist = isAdd ? new List<object>() : null;
foreach (var propValItem in propValEach) foreach (var propValItem in propValEach)
{ {
for (var colidx = 0; colidx < tref.Columns.Count; colidx++) for (var colidx = 0; colidx < tref.Columns.Count; colidx++)
@ -346,8 +347,10 @@ namespace FreeSql
var val = FreeSql.Internal.Utils.GetDataReaderValue(tref.RefColumns[colidx].CsType, _db.OrmOriginal.GetEntityValueWithPropertyName(_table.Type, item, tref.Columns[colidx].CsName)); var val = FreeSql.Internal.Utils.GetDataReaderValue(tref.RefColumns[colidx].CsType, _db.OrmOriginal.GetEntityValueWithPropertyName(_table.Type, item, tref.Columns[colidx].CsName));
_db.OrmOriginal.SetEntityValueWithPropertyName(tref.RefEntityType, propValItem, tref.RefColumns[colidx].CsName, val); _db.OrmOriginal.SetEntityValueWithPropertyName(tref.RefEntityType, propValItem, tref.RefColumns[colidx].CsName, val);
} }
refSet.AddOrUpdate(propValItem); if (isAdd) addlist.Add(propValItem);
else refSet.AddOrUpdate(propValItem);
} }
if (isAdd) refSet.AddRange(addlist);
break; break;
} }
}; };

View File

@ -1386,7 +1386,7 @@
<member name="M:FreeSql.FreeSqlBuilder.UseNameConvert(FreeSql.Internal.NameConvertType)"> <member name="M:FreeSql.FreeSqlBuilder.UseNameConvert(FreeSql.Internal.NameConvertType)">
<summary> <summary>
实体类名 -> 数据库表名,命名转换(类名、属性名都生效)<para></para> 实体类名 -> 数据库表名,命名转换(类名、属性名都生效)<para></para>
优先级小于 [Table(Name = "xxx")]、[Column(Name = "xxx")] 优先级小于 [Column(Name = "xxx")]
</summary> </summary>
<param name="convertType"></param> <param name="convertType"></param>
<returns></returns> <returns></returns>

View File

@ -150,7 +150,7 @@ namespace FreeSql
/// <summary> /// <summary>
/// 实体类名 -> 数据库表名,命名转换(类名、属性名都生效)<para></para> /// 实体类名 -> 数据库表名,命名转换(类名、属性名都生效)<para></para>
/// 优先级小于 [Table(Name = "xxx")]、[Column(Name = "xxx")] /// 优先级小于 [Column(Name = "xxx")]
/// </summary> /// </summary>
/// <param name="convertType"></param> /// <param name="convertType"></param>
/// <returns></returns> /// <returns></returns>