diff --git a/docs/en/Concurrency-Check.md b/docs/en/Concurrency-Check.md index bf31d3db10..25e60713c7 100644 --- a/docs/en/Concurrency-Check.md +++ b/docs/en/Concurrency-Check.md @@ -29,6 +29,8 @@ public interface IHasConcurrencyStamp * While a new record is **creating**, if the entity implements the `IHasConcurrencyStamp` interface, ABP Framework automatically sets a unique value to the **ConcurrencyStamp** property. * While a record is **updating**, ABP Framework compares the **ConcurrencyStamp** property of the entity with the provided **ConcurrencyStamp** value by the user and if the values match, it automatically updates the **ConcurrencyStamp** property with the new unique value. If there is a mismatch, `AbpDbConcurrencyException` is thrown. +> If there is a unit of work, you need to call the [SaveChangesAsync](./Unit-Of-Work.md#savechangesasync) method to get the generated `ConcurrencyStamp` when creating or updating. + **Example: Applying Concurrency Control for the Book Entity** Implement the `IHasConcurrencyStamp` interface for your entity: @@ -74,8 +76,8 @@ public class BookAppService : ApplicationService, IBookAppService book.ConcurrencyStamp = input.ConcurrencyStamp; //set other input values to the entity ... - - await BookRepository.UpdateAsync(book); + //use autoSave: true to get the latest ConcurrencyStamp + await BookRepository.UpdateAsync(book, autoSave: true); } } ``` @@ -134,8 +136,8 @@ public class BookAppService : ApplicationService, IBookAppService book.ConcurrencyStamp = input.ConcurrencyStamp; //set other input values to the entity ... - - await BookRepository.UpdateAsync(book); + //use autoSave: true to get the latest ConcurrencyStamp + await BookRepository.UpdateAsync(book, autoSave: true); } } ```