diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
index b6a03c2c2f..e8850644b1 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
@@ -437,7 +437,16 @@
"IsStableVersion": "Stable Version",
"IsActive": "Active",
"NewVersion": "New Version",
- "VersionHistoryDeletionConfirmationMessage": "Are you sure you want to delete this version?"
-
+ "VersionHistoryDeletionConfirmationMessage": "Are you sure you want to delete this version?",
+ "CreateAbpConsultantLogoInfo": "Maximum file size: 1MB Supported file types: jpg, jpeg, png, SVG, WebP",
+ "UrlCode": "Url Code",
+ "Icon": "Icon",
+ "Clear": "Clear",
+ "Permission:AbpConsultant": "ABP Consultant",
+ "Menu:AbpConsultants": "ABP Consultants",
+ "CreateAbpConsultant": "Create ABP Consultant",
+ "UrlCodeIsNotAvailable": "Url code is used by another ABP Consultant.",
+ "AbpConsultants": "ABP Consultants",
+ "AbpConsultant": "ABP Consultant"
}
}
diff --git a/docs/en/Customizing-Application-Modules-Extending-Entities.md b/docs/en/Customizing-Application-Modules-Extending-Entities.md
index a3c9ae4e9a..c2cacb4e4c 100644
--- a/docs/en/Customizing-Application-Modules-Extending-Entities.md
+++ b/docs/en/Customizing-Application-Modules-Extending-Entities.md
@@ -101,7 +101,7 @@ public class MyLocalIdentityUserChangeEventHandler :
````
* `EntityChangedEventData` covers create, update and delete events for the given entity. If you need, you can subscribe to create, update and delete events individually (in the same class or different classes).
-* This code will be executed **out of the local transaction**, because it listens the `EntityChanged` event. You can subscribe to the `EntityChangingEventData` to perform your event handler in **the same local (in-process) transaction** if the current [unit of work](Unit-Of-Work.md) is transactional.
+* This code will be executed in the **current unit of work**, the whole process becomes transactional.
> Reminder: This approach needs to change the `IdentityUser` entity in the same process contains the handler class. It perfectly works even for a clustered environment (when multiple instances of the same application are running on multiple servers).
diff --git a/docs/en/Getting-Started-Running-Solution.md b/docs/en/Getting-Started-Running-Solution.md
index 44fbd3eb03..36cd5ffe0a 100644
--- a/docs/en/Getting-Started-Running-Solution.md
+++ b/docs/en/Getting-Started-Running-Solution.md
@@ -113,11 +113,11 @@ This is the HTTP API that is used by the web application.
3. Lastly, ensure that the {{if UI=="MVC"}}`.Web`{{else}}`.Blazor`{{end}} project is the startup project and run the application which will open a **welcome** page in your browser
-
+
Click to the **login** button which will redirect you to the *authentication server* to login to the application:
-
+
{{ else # Tiered != "Yes" }}
@@ -125,7 +125,7 @@ Ensure that the {{if UI=="MVC"}}`.Web`{{else}}`.Blazor`{{end}} project is the st
> Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster.
-
+
{{ end # Tiered }}
@@ -171,7 +171,7 @@ Ensure that the `.Blazor` project is the startup project and run the application
Once the application starts, click to the **Login** link on to header, which redirects you to the authentication server to enter a username and password:
-
+
{{ else if UI == "NG" }}
@@ -191,7 +191,7 @@ yarn start
It may take a longer time for the first build. Once it finishes, it opens the Angular UI in your default browser with the [localhost:4200](http://localhost:4200/) address.
-
+
{{ end }}
diff --git a/docs/en/Migration-Guides/Abp-7_0.md b/docs/en/Migration-Guides/Abp-7_0.md
index 05dc276e3d..65a1614603 100644
--- a/docs/en/Migration-Guides/Abp-7_0.md
+++ b/docs/en/Migration-Guides/Abp-7_0.md
@@ -110,6 +110,31 @@ See https://github.com/abpframework/abp/pull/13845 for more info.
> You can ignore this if you don't use CMS Kit Module.
+## Data migration environment
+
+Please call `AddDataMigrationEnvironment` method in the migration project.
+
+```cs
+using (var application = await AbpApplicationFactory.CreateAsync(options =>
+{
+ //...
+ options.AddDataMigrationEnvironment();
+}))
+{
+ //...
+}
+```
+
+```cs
+var builder = WebApplication.CreateBuilder(args);
+builder.Services.AddDataMigrationEnvironment();
+// Call AddDataMigrationEnvironment before AddApplicationAsync
+await builder.AddApplicationAsync();
+//...
+```
+
+See https://github.com/abpframework/abp/pull/13985 for more info.
+
## Devart.Data.Oracle.EFCore
The `Devart.Data.Oracle.EFCore` package do not yet support EF Core 7.0, If you use `AbpEntityFrameworkCoreOracleDevartModule(Volo.Abp.EntityFrameworkCore.Oracle.Devart)` may not work as expected, We will release new packages as soon as they are updated.
diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md
index d72505b309..6178ebbb8e 100644
--- a/docs/en/Tutorials/Part-10.md
+++ b/docs/en/Tutorials/Part-10.md
@@ -1126,6 +1126,21 @@ protected override async Task OnInitializedAsync()
* It is essential to call the `base.OnInitializedAsync()` since `AbpCrudPageBase` has some initialization code to be executed.
+Override the `OpenCreateModalAsync` method and adding the following code:
+
+````csharp
+protected override async Task OpenCreateModalAsync()
+{
+ if (!authorList.Any())
+ {
+ throw new UserFriendlyException(message: L["AnAuthorIsRequiredForCreatingBook"]);
+ }
+
+ await base.OpenCreateModalAsync();
+ NewEntity.AuthorId = authorList.First().Id;
+}
+````
+
The final `@code` block should be the following:
````csharp
@@ -1147,6 +1162,17 @@ The final `@code` block should be the following:
await base.OnInitializedAsync();
authorList = (await AppService.GetAuthorLookupAsync()).Items;
}
+
+ protected override async Task OpenCreateModalAsync()
+ {
+ if (!authorList.Any())
+ {
+ throw new UserFriendlyException(message: L["AnAuthorIsRequiredForCreatingBook"]);
+ }
+
+ await base.OpenCreateModalAsync();
+ NewEntity.AuthorId = authorList.First().Id;
+ }
}
````
@@ -1156,7 +1182,6 @@ Finally, add the following `Field` definition into the `ModalBody` of the *Creat
@L["Author"]