Skip to content

Commit a80d2cd

Browse files
committed
- 优化 EnableAddOrUpdateNavigate 逻辑;
1 parent 1090de1 commit a80d2cd

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

FreeSql.DbContext/DbSet/DbSetAsync.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,15 +328,18 @@ async Task AddOrUpdateNavigateAsync(TEntity item, bool isAdd, string propertyNam
328328
}
329329
break;
330330
case Internal.Model.TableRefType.OneToMany:
331+
var addlist = isAdd ? new List<object>() : null;
331332
foreach (var propValItem in propValEach)
332333
{
333334
for (var colidx = 0; colidx < tref.Columns.Count; colidx++)
334335
{
335336
var val = FreeSql.Internal.Utils.GetDataReaderValue(tref.RefColumns[colidx].CsType, _db.OrmOriginal.GetEntityValueWithPropertyName(_table.Type, item, tref.Columns[colidx].CsName));
336337
_db.OrmOriginal.SetEntityValueWithPropertyName(tref.RefEntityType, propValItem, tref.RefColumns[colidx].CsName, val);
337338
}
338-
await refSet.AddOrUpdateAsync(propValItem, cancellationToken);
339+
if (isAdd) addlist.Add(propValItem);
340+
else await refSet.AddOrUpdateAsync(propValItem, cancellationToken);
339341
}
342+
if (isAdd) await refSet.AddRangeAsync(addlist, cancellationToken);
340343
break;
341344
}
342345
};

FreeSql.DbContext/DbSet/DbSetSync.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,15 +339,18 @@ void AddOrUpdateNavigate(TEntity item, bool isAdd, string propertyName)
339339
}
340340
break;
341341
case Internal.Model.TableRefType.OneToMany:
342+
var addlist = isAdd ? new List<object>() : null;
342343
foreach (var propValItem in propValEach)
343344
{
344345
for (var colidx = 0; colidx < tref.Columns.Count; colidx++)
345346
{
346347
var val = FreeSql.Internal.Utils.GetDataReaderValue(tref.RefColumns[colidx].CsType, _db.OrmOriginal.GetEntityValueWithPropertyName(_table.Type, item, tref.Columns[colidx].CsName));
347348
_db.OrmOriginal.SetEntityValueWithPropertyName(tref.RefEntityType, propValItem, tref.RefColumns[colidx].CsName, val);
348349
}
349-
refSet.AddOrUpdate(propValItem);
350+
if (isAdd) addlist.Add(propValItem);
351+
else refSet.AddOrUpdate(propValItem);
350352
}
353+
if (isAdd) refSet.AddRange(addlist);
351354
break;
352355
}
353356
};

FreeSql/FreeSql.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql/FreeSqlBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public FreeSqlBuilder UseMonitorCommand(Action<DbCommand> executing, Action<DbCo
150150

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

0 commit comments

Comments
 (0)