diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/AbpEntityChangeOptions.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/AbpEntityChangeOptions.cs
index a42b921068..5710bf7187 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/AbpEntityChangeOptions.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/AbpEntityChangeOptions.cs
@@ -8,6 +8,13 @@ public class AbpEntityChangeOptions
///
public bool PublishEntityUpdatedEventWhenNavigationChanges { get; set; } = true;
+ ///
+ /// Default: true.
+ /// Update the aggregate root when any navigation property changes.
+ /// Some properties like ConcurrencyStamp,LastModificationTime,LastModifierId etc. will be updated.
+ ///
+ public bool UpdateAggregateRootWhenNavigationChanges { get; set; } = true;
+
public IEntitySelectorList IgnoredNavigationEntitySelectors { get; set; }
public AbpEntityChangeOptions()
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
index 626daf0bb4..d68616e69f 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
+++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
@@ -274,7 +274,7 @@ public abstract class AbpDbContext : DbContext, IAbpEfCoreDbContext,
continue;
}
- if (entityEntry.State == EntityState.Unchanged)
+ if (EntityChangeOptions.Value.UpdateAggregateRootWhenNavigationChanges && entityEntry.State == EntityState.Unchanged)
{
ApplyAbpConceptsForModifiedEntity(entityEntry, true);
}
@@ -478,7 +478,8 @@ public abstract class AbpDbContext : DbContext, IAbpEfCoreDbContext,
}
}
- if (EntityChangeOptions.Value.PublishEntityUpdatedEventWhenNavigationChanges)
+ if (EntityChangeOptions.Value.PublishEntityUpdatedEventWhenNavigationChanges &&
+ EntityChangeOptions.Value.UpdateAggregateRootWhenNavigationChanges)
{
foreach (var entry in AbpEfCoreNavigationHelper.GetChangedEntityEntries()
.Where(x => x.State == EntityState.Unchanged)