Skip to content

Commit 6c39a30

Browse files
committed
- 修复 InsertOrUpdate 更新时触发两次 AuditValue;#2020
1 parent 9bd3999 commit 6c39a30

File tree

6 files changed

+47
-114
lines changed

6 files changed

+47
-114
lines changed

FreeSql.DbContext/DbSet/DbSetAsync.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ async public Task UpdateAsync(TEntity data, CancellationToken cancellationToken
446446
async Task UpdateRangePrivAsync(IEnumerable<TEntity> data, bool isCheck, CancellationToken cancellationToken)
447447
{
448448
if (data is List<TEntity> == false) data = data?.ToList();
449-
if (CanUpdate(data, true) == false) return;
449+
if (isCheck && CanUpdate(data, true) == false) return;
450450
foreach (var item in data)
451451
{
452452
if (_dicUpdateTimes.ContainsKey(item))

FreeSql.DbContext/DbSet/DbSetSync.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ public void Update(TEntity data)
419419
void UpdateRangePriv(IEnumerable<TEntity> data, bool isCheck)
420420
{
421421
if (data is List<TEntity> == false) data = data?.ToList();
422-
if (CanUpdate(data, true) == false) return;
422+
if (isCheck && CanUpdate(data, true) == false) return;
423423
foreach (var item in data)
424424
{
425425
if (_dicUpdateTimes.ContainsKey(item))

FreeSql.DbContext/FreeSql.DbContext.xml

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql.Tests/FreeSql.Tests.DbContext2/CompareStateTest.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,30 @@ public class AppInfoEntity
4141
public string AppName { get; set; }
4242
}
4343

44+
[Fact]
45+
async public Task TestIssues()
46+
{
47+
using (var freeSql = g.CreateMemory())
48+
{
49+
freeSql.Aop.AuditValue += (_, args) =>
50+
{
51+
Console.WriteLine(args.AuditValueType);
52+
Console.WriteLine(args.Property.Name);
53+
};
54+
55+
var repository = freeSql.GetRepository<People>();
56+
var people = new People { Name = "John Doe" };
57+
await repository.InsertOrUpdateAsync(people);
58+
people.Name = "Tim Doe";
59+
await repository.InsertOrUpdateAsync(people);
60+
}
61+
}
62+
63+
public class People
64+
{
65+
[Column(IsPrimary = true, IsIdentity = true)]
66+
public int Id { get; set; }
67+
public string Name { get; set; } = string.Empty;
68+
}
4469
}
4570
}

FreeSql.Tests/FreeSql.Tests.DbContext2/FreeSql.Tests.DbContext2.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212

1313
<ItemGroup>
1414
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.4" />
15-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.0" />
16-
<PackageReference Include="xunit" Version="2.4.1" />
17-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
16+
<PackageReference Include="xunit" Version="2.9.3" />
17+
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
1818
<PrivateAssets>all</PrivateAssets>
1919
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2020
</PackageReference>

FreeSql/FreeSql.xml

Lines changed: 0 additions & 109 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)