Browse Source

Merge branch 'dev' into DbContextTypeProvider

pull/15335/head
maliming 4 years ago
parent
commit
8310825969
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 14
      .github/pull_request_template.md
  2. 25
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
  3. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json
  4. 1
      docs/en/CLI.md
  5. 2
      docs/en/Customizing-Application-Modules-Extending-Entities.md
  6. 10
      docs/en/Getting-Started-Running-Solution.md
  7. 25
      docs/en/Migration-Guides/Abp-7_0.md
  8. 2
      docs/en/Migration-Guides/OpenIddict-Angular.md
  9. 2
      docs/en/Migration-Guides/OpenIddict-Blazor-Server.md
  10. 2
      docs/en/Migration-Guides/OpenIddict-Blazor.md
  11. 2
      docs/en/Migration-Guides/OpenIddict-Mvc.md
  12. 2
      docs/en/Migration-Guides/OpenIddict-Step-by-Step.md
  13. 2
      docs/en/Modules/Account.md
  14. 2
      docs/en/Modules/Audit-Logging.md
  15. 2
      docs/en/Modules/Background-Jobs.md
  16. 5
      docs/en/Modules/Cms-Kit/Comments.md
  17. 6
      docs/en/Modules/Docs.md
  18. 2
      docs/en/Modules/Feature-Management.md
  19. 2
      docs/en/Modules/Identity.md
  20. 2
      docs/en/Modules/IdentityServer.md
  21. 6
      docs/en/Modules/OpenIddict.md
  22. 2
      docs/en/Modules/Permission-Management.md
  23. 7
      docs/en/Startup-Templates/Application-Single-Layer.md
  24. 2
      docs/en/Startup-Templates/Application.md
  25. 2
      docs/en/Startup-Templates/Module.md
  26. 29
      docs/en/Tutorials/Part-10.md
  27. 42
      docs/en/Tutorials/Part-3.md
  28. 4
      docs/en/Tutorials/Part-5.md
  29. 6
      docs/en/Tutorials/Part-9.md
  30. 87
      docs/en/Tutorials/Todo/Single-Layer/Index.md
  31. BIN
      docs/en/Tutorials/Todo/Single-Layer/todo-single-layer-ui-initial.png
  32. BIN
      docs/en/Tutorials/Todo/todo-list.png
  33. BIN
      docs/en/Tutorials/Todo/todo-ui-initial.png
  34. BIN
      docs/en/Tutorials/images/blazor-edit-book-modal-2.png
  35. BIN
      docs/en/Tutorials/images/blazor-new-book-modal-2.png
  36. BIN
      docs/en/Tutorials/images/book-create-modal-with-author-2.png
  37. BIN
      docs/en/Tutorials/images/bookstore-added-authors-to-modals-2.png
  38. BIN
      docs/en/Tutorials/images/bookstore-angular-author-selection-2.png
  39. BIN
      docs/en/Tutorials/images/bookstore-confirmation-popup-2.png
  40. BIN
      docs/en/Tutorials/images/bookstore-final-actions-dropdown-2.png
  41. BIN
      docs/en/Tutorials/images/bookstore-new-book-form-v3.png
  42. 9
      docs/en/UI/Angular/Account-Module.md
  43. 14
      docs/en/UI/Angular/Quick-Start.md
  44. BIN
      docs/en/images/bookstore-home-2.png
  45. BIN
      docs/en/images/bookstore-login-2.png
  46. 1
      docs/zh-Hans/CLI.md
  47. 2
      framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs
  48. 9
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/LayoutHooks/LayoutHook.razor.cs
  49. 11
      framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Components/LayoutHook/LayoutHookViewComponent.cs
  50. 5
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs
  51. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs
  52. 4
      framework/src/Volo.Abp.Auditing.Contracts/Volo/Abp/Auditing/IHasEntityVersion.cs
  53. 1
      framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperExtensibleDtoExtensions.cs
  54. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
  55. 13
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMigrateDatabaseChangeStep.cs
  56. 57
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs
  57. 50
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs
  58. 44
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs
  59. 17
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
  60. 4
      framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo.Abp.EntityFrameworkCore.MySQL.csproj
  61. 5
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
  62. 3
      framework/src/Volo.Abp.Json.Newtonsoft/Volo/Abp/Json/Newtonsoft/AbpDateTimeConverter.cs
  63. 8
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfo.cs
  64. 46
      modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.abppkg.analyze.json
  65. 141
      modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.abppkg.analyze.json
  66. 46
      modules/account/src/Volo.Abp.Account.HttpApi.Client/Volo.Abp.Account.HttpApi.Client.abppkg.analyze.json
  67. 46
      modules/account/src/Volo.Abp.Account.HttpApi/Volo.Abp.Account.HttpApi.abppkg.analyze.json
  68. 46
      modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.abppkg.analyze.json
  69. 46
      modules/account/src/Volo.Abp.Account.Web.OpenIddict/Volo.Abp.Account.Web.OpenIddict.abppkg.analyze.json
  70. 46
      modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.abppkg.analyze.json
  71. 46
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo.Abp.AuditLogging.Domain.Shared.abppkg.analyze.json
  72. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ar.json
  73. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de-DE.json
  74. 1
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/en.json
  75. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/es.json
  76. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fi.json
  77. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fr.json
  78. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hi.json
  79. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/it.json
  80. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pt-BR.json
  81. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ru.json
  82. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sk.json
  83. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sl.json
  84. 1
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/tr.json
  85. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json
  86. 3
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hant.json
  87. 802
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo.Abp.AuditLogging.Domain.abppkg.analyze.json
  88. 115
      modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo.Abp.AuditLogging.EntityFrameworkCore.abppkg.analyze.json
  89. 66
      modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo.Abp.AuditLogging.MongoDB.abppkg.analyze.json
  90. 46
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.abppkg.analyze.json
  91. 46
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Quartz/Volo.Abp.BackgroundJobs.DemoApp.Quartz.abppkg.analyze.json
  92. 46
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.RabbitMq/Volo.Abp.BackgroundJobs.DemoApp.RabbitMq.abppkg.analyze.json
  93. 46
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Volo.Abp.BackgroundJobs.DemoApp.Shared.abppkg.analyze.json
  94. 46
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.abppkg.analyze.json
  95. 46
      modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain.Shared/Volo.Abp.BackgroundJobs.Domain.Shared.abppkg.analyze.json
  96. 177
      modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain/Volo.Abp.BackgroundJobs.Domain.abppkg.analyze.json
  97. 115
      modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo.Abp.BackgroundJobs.EntityFrameworkCore.abppkg.analyze.json
  98. 66
      modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp.BackgroundJobs.MongoDB.abppkg.analyze.json
  99. 46
      modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.analyze.json
  100. 46
      modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.analyze.json

14
.github/pull_request_template.md

@ -0,0 +1,14 @@
### Description
Resolves #xxxx (write the related issue number if available)
TODO: Describe what this PR has changed, add screenshot or animated GIF if available, write if it is a breaking change, and how to fix the breaking changes for existing applications if so.
### Checklist
- [ ] I fully tested it as developer / designer and created unit / integration tests
- [ ] I documented it (or no need to document or I will create a separate documentation issue)
### How to test it?
Please describe how this can be tested by the test engineers if it is not already explicit - or remove this section if no need to description.

25
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json

@ -428,6 +428,29 @@
"CurrentEstimatedSizeInfo": "Indicates an estimated sum of all the NuGet packages' content size currently in the memory cache",
"CurrentEntryCountInfo": "Indicates the number of instances currently in the memory cache.",
"TotalHitsInfo": "Indicates the total number of cache misses. A cache hit occurs when a file is requested from a cache and the cache is able to fulfill that request.",
"TotalMissesInfo": "Indicates the total number of cache hits. A cache miss is when the cache does not contain the requested content."
"TotalMissesInfo": "Indicates the total number of cache hits. A cache miss is when the cache does not contain the requested content.",
"Permission:VersionHistory": "Version History",
"Caches": "Caches",
"VersionHistories": "Version History",
"Version": "Version",
"PublishDate": "Publish Date",
"IsStableVersion": "Stable Version",
"IsActive": "Active",
"NewVersion": "New Version",
"VersionHistoryDeletionConfirmationMessage": "Are you sure you want to delete this version?",
"CreateAbpConsultantLogoInfo": "Maximum file size: <b>1MB</b> <br/> Supported file types: <b>jpg, jpeg, png, SVG, WebP</b>",
"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",
"AbpConsultantEdit": "Edit ABP Consultant",
"AbpConsultantCreate": "Create ABP Consultant",
"WhoWeAreItem": "Who We Are Item",
"FieldIsRequired": "{0} is required.",
}
}

4
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json

@ -429,6 +429,8 @@
"Activity": "Activity",
"Type": "Type",
"Contribution": "Contribution",
"Info": "Info"
"Info": "Info",
"WhoWeAre_Partner": "Who We Are",
"WhoWeAre_Expert": "About Me"
}
}

1
docs/en/CLI.md

@ -138,6 +138,7 @@ For more samples, go to [ABP CLI Create Solution Samples](CLI-New-Command-Sample
* `--ui` or `-u`: Specifies the UI framework. Default framework is `mvc`. Available frameworks:
* `mvc`: ASP.NET Core MVC.
* `angular`: Angular UI.
* `blazor`: Blazor UI.
* `blazor-server`: Blazor Server UI.
* `none`: Without UI.
* `--database-provider` or `-d`: Specifies the database provider. Default provider is `ef`. Available providers:

2
docs/en/Customizing-Application-Modules-Extending-Entities.md

@ -101,7 +101,7 @@ public class MyLocalIdentityUserChangeEventHandler :
````
* `EntityChangedEventData<T>` 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<T>` 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).

10
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
![mvc-tiered-app-home](images/bookstore-home.png)
![mvc-tiered-app-home](images/bookstore-home-2.png)
Click to the **login** button which will redirect you to the *authentication server* to login to the application:
![bookstore-login](images/bookstore-login.png)
![bookstore-login](images/bookstore-login-2.png)
{{ 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.
![bookstore-login](images/bookstore-login.png)
![bookstore-login](images/bookstore-login-2.png)
{{ 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:
![bookstore-login](images/bookstore-login.png)
![bookstore-login](images/bookstore-login-2.png)
{{ 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.
![bookstore-login](images/bookstore-login.png)
![bookstore-login](images/bookstore-login-2.png)
{{ end }}

25
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<MyMigratorModule>(options =>
{
//...
options.AddDataMigrationEnvironment();
}))
{
//...
}
```
```cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDataMigrationEnvironment();
// Call AddDataMigrationEnvironment before AddApplicationAsync
await builder.AddApplicationAsync<MyMigratorModule>();
//...
```
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.

2
docs/en/Migration-Guides/OpenIddict-Angular.md

@ -112,7 +112,7 @@
## IdentityServer
This project is renamed to **AuthServer** after v6.0.0-rc1. You can also refactor and rename your project to *AuthServer* for easier updates in the future.
This project is renamed to **AuthServer** after v6.0.0. You can also refactor and rename your project to *AuthServer* for easier updates in the future.
- In **MyApplication.IdentityServer.csproj** replace **project references**:

2
docs/en/Migration-Guides/OpenIddict-Blazor-Server.md

@ -103,7 +103,7 @@
## IdentityServer
This project is renamed to **AuthServer** after v6.0.0-rc1. You can also refactor and rename your project to *AuthServer* for easier updates in the future.
This project is renamed to **AuthServer** after v6.0.0. You can also refactor and rename your project to *AuthServer* for easier updates in the future.
- In **MyApplication.IdentityServer.csproj** replace **project references**:

2
docs/en/Migration-Guides/OpenIddict-Blazor.md

@ -131,7 +131,7 @@
## IdentityServer
This project is renamed to **AuthServer** after v6.0.0-rc1. You can also refactor and rename your project to *AuthServer* for easier updates in the future.
This project is renamed to **AuthServer** after v6.0.0. You can also refactor and rename your project to *AuthServer* for easier updates in the future.
- In **MyApplication.IdentityServer.csproj** replace **project references**:

2
docs/en/Migration-Guides/OpenIddict-Mvc.md

@ -111,7 +111,7 @@ Replace role scope to **roles** and add **UsePkce** and **SignoutScheme** option
## IdentityServer
This project is renamed to **AuthServer** after v6.0.0-rc1. You can also refactor and rename your project to *AuthServer* for easier updates in the future.
This project is renamed to **AuthServer** after v6.0.0. You can also refactor and rename your project to *AuthServer* for easier updates in the future.
- In **MyApplication.IdentityServer.csproj** replace **project references**:

2
docs/en/Migration-Guides/OpenIddict-Step-by-Step.md

@ -1,6 +1,6 @@
# Migrating from IdentityServer to OpenIddict Step by Step Guide
This guide provides layer-by-layer guidance for migrating your existing application to [OpenIddict](https://github.com/openiddict/openiddict-core) from IdentityServer. ABP startup templates use `OpenIddict` OpenId provider from v6.0.0-rc1 by default and `IdentityServer` projects are renamed to `AuthServer` in tiered/separated solutions. Since OpenIddict is only available with ABP v6.0, you will need to update your existing application in order to apply OpenIddict changes.
This guide provides layer-by-layer guidance for migrating your existing application to [OpenIddict](https://github.com/openiddict/openiddict-core) from IdentityServer. ABP startup templates use `OpenIddict` OpenId provider from v6.0.0 by default and `IdentityServer` projects are renamed to `AuthServer` in tiered/separated solutions. Since OpenIddict is only available with ABP v6.0, you will need to update your existing application in order to apply OpenIddict changes.
## History
We are not removing Identity Server packages and we will continue to release new versions of IdentityServer-related NuGet/NPM packages. That means you won't have an issue while upgrading to v6.0 when the stable version releases. We will continue to fix bugs in our packages for a while. ABP 7.0 will be based on .NET 7. If Identity Server continues to work with .NET 7, we will also continue to ship NuGet packages for our IDS integration.

2
docs/en/Modules/Account.md

@ -6,7 +6,7 @@ This module is based on [Microsoft's Identity library](https://docs.microsoft.co
## How to Install
This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
This module comes as pre-installed (as NuGet/NPM packages). You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
### The Source Code

2
docs/en/Modules/Audit-Logging.md

@ -6,7 +6,7 @@ The Audit Logging Module basically implements the `IAuditingStore` to save the a
## How to Install
This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
This module comes as pre-installed (as NuGet/NPM packages). You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
### The Source Code

2
docs/en/Modules/Background-Jobs.md

@ -6,7 +6,7 @@ The Background Jobs module implements the `IBackgroundJobStore` interface and ma
## How to Install
This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
This module comes as pre-installed (as NuGet/NPM packages). You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
### The Source Code

5
docs/en/Modules/Cms-Kit/Comments.md

@ -35,11 +35,12 @@ The comment system provides a commenting [widget](../../UI/AspNetCore/Widgets.md
@await Component.InvokeAsync(typeof(CommentingViewComponent), new
{
entityType = "Product",
entityId = "..."
entityId = "...",
referralLinks = new [] {"nofollow"}
})
```
`entityType` was explained in the previous section. `entityId` should be the unique id of the product, in this example. If you have a Product entity, you can use its Id here.
`entityType` was explained in the previous section. `entityId` should be the unique id of the product, in this example. If you have a Product entity, you can use its Id here. `referralLinks` is an optional parameter. You can use this parameter to add values (such as "nofollow", "noreferrer", or any other values) to the [rel attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) of links.
## User Interface

6
docs/en/Modules/Docs.md

@ -32,7 +32,7 @@ It is recommended to use ABP CLI to create new projects. Use the following comma
abp new Acme.MyProject
```
You can also navigate to https://abp.io/get-started. Enter your project name as `Acme.MyProject`, other use default options.
You can also generate a CLI command from [get started page](https://abp.io/get-started). Enter your project name as `Acme.MyProject`, other use default options.
Note that this document covers `Entity Framework Core` provider but you can also select `MongoDB` as your database provider.
@ -519,7 +519,7 @@ Now you can use **Scriban** syntax to create sections in your document.
For example:
```txt
````
{{ if UI == "NG" }}
* `-u` argument specifies the UI framework, `angular` in this case.
@ -538,7 +538,7 @@ For example:
{{ end }}
```
````
You can also use variables in a text, adding **_Value** postfix to its key:

2
docs/en/Modules/Feature-Management.md

@ -6,7 +6,7 @@ The Feature Management module implements the `IFeatureManagementStore` interface
## How to Install
This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
This module comes as pre-installed (as NuGet/NPM packages). You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
### The Source Code

2
docs/en/Modules/Identity.md

@ -4,7 +4,7 @@ Identity module is used to manage roles, users and their permissions, based on t
## How to Install
This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
This module comes as pre-installed (as NuGet/NPM packages). You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
### The Source Code

2
docs/en/Modules/IdentityServer.md

@ -4,7 +4,7 @@ IdentityServer module provides a full integration with the [IdentityServer](http
## How to Install
This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
This module comes as pre-installed (as NuGet/NPM packages). You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
### The Source Code

6
docs/en/Modules/OpenIddict.md

@ -4,7 +4,7 @@ OpenIddict module provides an integration with the [OpenIddict](https://github.c
## How to Install
This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as a package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
This module comes as pre-installed (as NuGet/NPM packages). You can continue to use it as a package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
### The Source Code
@ -299,12 +299,12 @@ PreConfigure<AbpOpenIddictAspNetCoreOptions>(options =>
The background task that automatically removes orphaned tokens/authorizations. This can be configured by `TokenCleanupOptions` to manage it.
`TokenCleanupOptions` can be configured in the `PreConfigureServices` method of your OpenIddict [module](https://docs.abp.io/en/abp/latest/Module-Development-Basics).
`TokenCleanupOptions` can be configured in the `ConfigureServices` method of your OpenIddict [module](https://docs.abp.io/en/abp/latest/Module-Development-Basics).
Example:
```csharp
PreConfigure<TokenCleanupOptions>(options =>
Configure<TokenCleanupOptions>(options =>
{
//Set options here...
});

2
docs/en/Modules/Permission-Management.md

@ -6,7 +6,7 @@ This module implements the `IPermissionStore` to store and manage permissions va
## How to Install
This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
This module comes as pre-installed (as NuGet/NPM packages). You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module.
### The Source Code

7
docs/en/Startup-Templates/Application-Single-Layer.md

@ -10,7 +10,7 @@ ABP's [Application Startup Template](Application.md) provides a well-organized a
## How to Start with It?
You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download this startup template from the [Get Started](https://abp.io/get-started) page. In this section, we will use the ABP CLI.
You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can generate a CLI command for this startup template from the [Get Started](https://abp.io/get-started) page. In this section, we will use the ABP CLI.
Firstly, install the ABP CLI if you haven't installed it before:
@ -32,19 +32,18 @@ abp new Acme.BookStore -t app-nolayers
This template provides multiple UI frameworks:
* `mvc`: ASP.NET Core MVC UI with Razor Pages (default)
* `blazor`: Blazor UI
* `blazor-server`: Blazor Server UI
* `angular`: Angular UI
* `none`: Without UI (for HTTP API development)
> This template doesn't have Blazor WebAssembly UI, because it requires 3 projects at least (server-side, UI and shared library between these two projects). We are recommending to use the layered [application startup template](Application.md) for Blazor WebAssembly projects.
Use the `-u` (or `--ui`) option to specify the UI framework while creating the solution:
```bash
abp new Acme.BookStore -t app-nolayers -u angular
```
This example specifies the UI type (the `-u` option) as `angular`. You can also specify `mvc`, `blazor-server` or `none` for the UI type.
This example specifies the UI type (the `-u` option) as `angular`. You can also specify `mvc`, `blazor`, `blazor-server` or `none` for the UI type.
### Specify the Database Provider

2
docs/en/Startup-Templates/Application.md

@ -11,7 +11,7 @@ This document explains **the solution structure** and projects in details. If yo
## How to Start With?
You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download from the [Get Started](https://abp.io/get-started) page. CLI approach is used here.
You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can generate a CLI command from the [Get Started](https://abp.io/get-started) page. CLI approach is used here.
First, install the ABP CLI if you haven't installed it before:

2
docs/en/Startup-Templates/Module.md

@ -4,7 +4,7 @@ This template can be used to create a **reusable [application module](../Modules
## How to Start With?
You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download from the [Get Started](https://abp.io/get-started) page. CLI approach is used here.
You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can generate a CLI command from the [Get Started](https://abp.io/get-started) page. CLI approach is used here.
First, install the ABP CLI if you haven't installed before:

29
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
<Field>
<FieldLabel>@L["Author"]</FieldLabel>
<Select TValue="Guid" @bind-SelectedValue="@NewEntity.AuthorId">
<SelectItem TValue="Guid" Value="Guid.Empty">@L["PickAnAuthor"]</SelectItem>
@foreach (var author in authorList)
{
<SelectItem TValue="Guid" Value="@author.Id">
@ -1170,7 +1195,7 @@ Finally, add the following `Field` definition into the `ModalBody` of the *Creat
This requires to add a new localization key to the `en.json` file:
````js
"PickAnAuthor": "Pick an author"
"AnAuthorIsRequiredForCreatingBook": "An author is required to create a book"
````
You can run the application to see the *Author Selection* while creating a new book:

42
docs/en/Tutorials/Part-3.md

@ -50,13 +50,13 @@ This part is also recorded as a video tutorial and **<a href="https://www.youtub
In this section, you will learn how to create a new modal dialog form to create a new book. The modal dialog will look like the image below:
![bookstore-create-dialog](images/bookstore-create-dialog-3.png)
![bookstore-create-dialog](./images/bookstore-create-dialog-3.png)
### Create the Modal Form
Create a new razor page named `CreateModal.cshtml` under the `Pages/Books` folder of the `Acme.BookStore.Web` project.
![bookstore-add-create-dialog](images/bookstore-add-create-dialog-v2.png)
![bookstore-add-create-dialog](./images/bookstore-add-create-dialog-v2.png)
#### CreateModal.cshtml.cs
@ -188,7 +188,7 @@ The final content of `Index.cshtml` is shown below:
This adds a new button called **New book** to the **top-right** of the table:
![bookstore-new-book-button](images/bookstore-new-book-button-3.png)
![bookstore-new-book-button](./images/bookstore-new-book-button-3.png)
Open the `Pages/Books/Index.js` file and add the following code right after the `Datatable` configuration:
@ -271,7 +271,7 @@ Now, you can **run the application** and add some new books using the new modal
Create a new razor page, named `EditModal.cshtml` under the `Pages/Books` folder of the `Acme.BookStore.Web` project:
![bookstore-add-edit-dialog](images/bookstore-add-edit-dialog.png)
![bookstore-add-edit-dialog](./images/bookstore-add-edit-dialog.png)
### EditModal.cshtml.cs
@ -460,7 +460,7 @@ You can run the application and edit any book by selecting the edit action on a
The final UI looks as below:
![bookstore-books-table-actions](images/bookstore-edit-button-3.png)
![bookstore-books-table-actions](./images/bookstore-edit-button-3.png)
> Notice that you don't see the "Actions" button in the figure below. Instead, you see an "Edit" button. ABP is smart enough to show a single simple button instead of a actions dropdown button when the dropdown has only a single item. After the next section, it will turn to a drop down button.
@ -653,7 +653,7 @@ Open `/src/app/book/book.component.html` and make the following changes:
<!-- Add the "new book" button here -->
<div class="text-lg-end pt-2">
<button id="create" class="btn btn-primary" type="button" (click)="createBook()">
<i class="fa fa-plus mr-1"></i>
<i class="fa fa-plus me-1"></i>
<span>{%{{{ "::NewBook" | abpLocalization }}}%}</span>
</button>
</div>
@ -687,7 +687,7 @@ Open `/src/app/book/book.component.html` and make the following changes:
You can open your browser and click the **New book** button to see the new modal.
![Empty modal for new book](images/bookstore-empty-new-book-modal-2.png)
![Empty modal for new book](./images/bookstore-empty-new-book-modal-2.png)
### Create a Reactive Form
@ -773,17 +773,17 @@ Open `/src/app/book/book.component.html` and replace `<ng-template #abpBody> </n
```html
<ng-template #abpBody>
<form [formGroup]="form" (ngSubmit)="save()">
<div class="form-group">
<div class="mt-2">
<label for="book-name">Name</label><span> * </span>
<input type="text" id="book-name" class="form-control" formControlName="name" autofocus />
</div>
<div class="form-group">
<div class="mt-2">
<label for="book-price">Price</label><span> * </span>
<input type="number" id="book-price" class="form-control" formControlName="price" />
</div>
<div class="form-group">
<div class="mt-2">
<label for="book-type">Type</label><span> * </span>
<select class="form-control" id="book-type" formControlName="type">
<option [ngValue]="null">Select a book type</option>
@ -791,7 +791,7 @@ Open `/src/app/book/book.component.html` and replace `<ng-template #abpBody> </n
</select>
</div>
<div class="form-group">
<div class="mt-2">
<label>Publish date</label><span> * </span>
<input
#datepicker="ngbDatepicker"
@ -924,7 +924,7 @@ export class BookComponent implements OnInit {
Now, you can open your browser to see the changes:
![Save button to the modal](images/bookstore-new-book-form-v3.png)
![Save button to the modal](./images/bookstore-new-book-form-v3.png)
## Updating a Book
@ -1038,7 +1038,7 @@ Open `/src/app/book/book.component.html`  and add the following `ngx-datatable-
aria-haspopup="true"
ngbDropdownToggle
>
<i class="fa fa-cog mr-1"></i>{%{{{ '::Actions' | abpLocalization }}}%}
<i class="fa fa-cog me-1"></i>{%{{{ '::Actions' | abpLocalization }}}%}
</button>
<div ngbDropdownMenu>
<button ngbDropdownItem (click)="editBook(row.id)">
@ -1052,7 +1052,7 @@ Open `/src/app/book/book.component.html`  and add the following `ngx-datatable-
Added an "Actions" dropdown as the first column of the table that is shown below:
![Action buttons](images/bookstore-actions-buttons-2.png)
![Action buttons](./images/bookstore-actions-buttons-2.png)
Also, change the `ng-template #abpHeader` section as shown below:
@ -1116,11 +1116,11 @@ Open `/src/app/book/book.component.html` and modify the `ngbDropdownMenu` to add
The final actions dropdown UI looks like below:
![bookstore-final-actions-dropdown](images/bookstore-final-actions-dropdown-2.png)
![bookstore-final-actions-dropdown](./images/bookstore-final-actions-dropdown-2.png)
Clicking the "Delete" action calls the `delete` method which then shows a confirmation popup as shown below:
![bookstore-confirmation-popup](images/bookstore-confirmation-popup-2.png)
![bookstore-confirmation-popup](./images/bookstore-confirmation-popup-2.png)
{{end}}
@ -1150,7 +1150,7 @@ Open the `Books.razor` and replace the `<CardHeader>` section with the following
This will change the card header by adding a "New book" button to the right side:
![blazor-add-book-button](images/blazor-add-book-button-2.png)
![blazor-add-book-button](./images/blazor-add-book-button-2.png)
Now, we can add a modal that will be opened when we click the button.
@ -1224,7 +1224,7 @@ This code requires a service; Inject the `AbpBlazorMessageLocalizerHelper<T>` at
That's all. Run the application and try to add a new book:
![blazor-new-book-modal](images/blazor-new-book-modal-2.png)
![blazor-new-book-modal](./images/blazor-new-book-modal-2.png)
## Updating a Book
@ -1250,7 +1250,7 @@ Open the `Books.razor` and add the following `DataGridEntityActionsColumn` secti
The `DataGridEntityActionsColumn` component is used to show an "Actions" dropdown for each row in the `DataGrid`. The `DataGridEntityActionsColumn` shows a **single button** instead of a dropdown if there is only one available action inside it:
![blazor-edit-book-action](images/blazor-edit-book-action-3.png)
![blazor-edit-book-action](./images/blazor-edit-book-action-3.png)
### Edit Modal
@ -1338,7 +1338,7 @@ public class BookStoreBlazorAutoMapperProfile : Profile
You can now run the application and try to edit a book.
![blazor-edit-book-modal](images/blazor-edit-book-modal-2.png)
![blazor-edit-book-modal](./images/blazor-edit-book-modal-2.png)
> Tip: Try to leave the *Name* field empty and submit the form to show the validation error message.
@ -1359,7 +1359,7 @@ Open the `Books.razor` page and add the following `EntityAction` code under the
The "Actions" button becomes a dropdown since it has two actions now:
![blazor-delete-book-action](images/blazor-delete-book-action-2.png)
![blazor-delete-book-action](./images/blazor-delete-book-action-2.png)
Run the application and try to delete a book.

4
docs/en/Tutorials/Part-5.md

@ -363,7 +363,7 @@ Open the `/src/app/book/book.component.html` file and replace the create button
````html
<!-- Add the abpPermission directive -->
<button *abpPermission="'BookStore.Books.Create'" id="create" class="btn btn-primary" type="button" (click)="createBook()">
<i class="fa fa-plus mr-1"></i>
<i class="fa fa-plus me-1"></i>
<span>{%{{{ '::NewBook' | abpLocalization }}}%}</span>
</button>
````
@ -374,7 +374,7 @@ Open the `/src/app/book/book.component.html` file and replace the create button
Books table in the book management page has an actions button for each row. The actions button includes *Edit* and *Delete* actions:
![bookstore-edit-delete-actions](images/bookstore-edit-delete-actions.png)
![bookstore-edit-delete-actions](images/bookstore-edit-delete-actions-2.png)
We should hide an action if the current user has not granted for the related permission.

6
docs/en/Tutorials/Part-9.md

@ -728,7 +728,7 @@ Open the `/src/app/author/author.component.html` and replace the content as belo
<div class="text-end col col-md-6">
<div class="text-lg-end pt-2">
<button *abpPermission="'BookStore.Authors.Create'" id="create" class="btn btn-primary" type="button" (click)="createAuthor()">
<i class="fa fa-plus mr-1"></i>
<i class="fa fa-plus me-1"></i>
<span>{%{{{ '::NewAuthor' | abpLocalization }}}%}</span>
</button>
</div>
@ -750,7 +750,7 @@ Open the `/src/app/author/author.component.html` and replace the content as belo
aria-haspopup="true"
ngbDropdownToggle
>
<i class="fa fa-cog mr-1"></i>{%{{{ '::Actions' | abpLocalization }}}%}
<i class="fa fa-cog me-1"></i>{%{{{ '::Actions' | abpLocalization }}}%}
</button>
<div ngbDropdownMenu>
<button *abpPermission="'BookStore.Authors.Edit'" ngbDropdownItem (click)="editAuthor(row.id)">
@ -785,7 +785,7 @@ Open the `/src/app/author/author.component.html` and replace the content as belo
<input type="text" id="author-name" class="form-control" formControlName="name" autofocus />
</div>
<div class="form-group">
<div class="mt-2">
<label>Birth date</label><span> * </span>
<input
#datepicker="ngbDatepicker"

87
docs/en/Tutorials/Todo/Single-Layer/Index.md

@ -3,7 +3,7 @@
````json
//[doc-params]
{
"UI": ["MVC", "BlazorServer", "NG"],
"UI": ["MVC", "Blazor", "BlazorServer", "NG"],
"DB": ["EF", "Mongo"]
}
````
@ -36,13 +36,23 @@ dotnet tool install -g Volo.Abp.Cli
Then create an empty folder, open a command-line terminal and execute the following command in the terminal:
````bash
abp new TodoApp -t app-nolayers{{if UI=="BlazorServer"}} -u blazor-server{{else if UI=="NG"}} -u angular{{end}}{{if DB=="Mongo"}} -d mongodb{{end}}
abp new TodoApp -t app-nolayers{{if UI=="BlazorServer"}} -u blazor-server{{else if UI=="Blazor"}} -u blazor{{else if UI=="NG"}} -u angular{{end}}{{if DB=="Mongo"}} -d mongodb{{end}}
````
{{if UI=="NG"}}
This will create a new solution, named *TodoApp*, with `angular` and `aspnet-core` folders. Once the solution is ready, open the solution (in the `aspnet-core` folder) with your favorite IDE.
{{else if UI=="Blazor"}}
This will create a new solution with three projects:
* A `blazor` application that contains the Blazor code, the client-side.
* A `host` application, hosts and serves the `blazor` application.
* A `contracts` project, shared library between these two projects.
Once the solution is ready, open it in your favorite IDE.
{{else}}
This will create a new solution with a single project, named *TodoApp*. Once the solution is ready, open it in your favorite IDE.
@ -51,7 +61,7 @@ This will create a new solution with a single project, named *TodoApp*. Once the
### Create the Database
You can run the following command in the root directory of your project (in the same folder of the `.csproj` file) to create the database and seed the initial data:
You can run the following command in the {{if UI=="Blazor"}} directory of your `TodoApp.Host` project {{else}}root directory of your project (in the same folder of the `.csproj` file){{end}} to create the database and seed the initial data:
```bash
dotnet run --migrate-database
@ -65,6 +75,14 @@ This command will create the database and seed the initial data for you. Then yo
It is good to run the application before starting the development. Running the application is pretty straight-forward, you can run the application with any IDE that supports .NET or by running the `dotnet run` CLI command in the directory of your project:
{{else if UI=="Blazor"}}
It is good to run the application before starting the development. Running the application is pretty straight-forward, you just need to run the `TodoApp.Host` application with any IDE that supports .NET or by running the `dotnet run` CLI command in the directory of your project.
> **Note:** The `host` application hosts and serves the `blazor` application. Therefore, you should run the `host` application only.
After the application runs, open the application in your default browser:
{{else if UI=="NG"}}
It is good to run the application before starting the development. The solution has two main applications:
@ -96,12 +114,12 @@ All right. We can start coding!
## Defining the Entity
This application will have a single [entity](../../../Entities.md) and we can start by creating it. So, create a new `TodoItem` class under the `Entities` folder of the project:
This application will have a single [entity](../../../Entities.md) and we can start by creating it. So, create a new `TodoItem` class under the `Entities` folder of {{if UI=="Blazor"}}the `TodoApp.Host` project{{else}}the project{{end}}:
````csharp
using Volo.Abp.Domain.Entities;
namespace TodoApp.Entities;
namespace TodoApp{{if UI=="Blazor"}}.Host.{{end}}Entities;
public class TodoItem : BasicAggregateRoot<Guid>
{
@ -151,7 +169,7 @@ We've mapped the `TodoItem` entity to the `TodoItems` table in the database. The
The startup solution is configured to use Entity Framework Core [Code First Migrations](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations). Since we've changed the database mapping configuration, we should create a new migration and apply changes to the database.
Open a command-line terminal in the root directory of your project and type the following command:
Open a command-line terminal in the {{if UI=="Blazor"}} directory of your `TodoApp.Host` project {{else}}root directory of your project (in the same folder of the `.csproj` file){{end} and type the following command:
````bash
dotnet ef migrations add Added_TodoItem
@ -202,10 +220,10 @@ Before starting to implement these use cases, first we need to create a DTO clas
### Creating the Data Transfer Object (DTO)
[Application services](../../../Application-Services.md) typically get and return DTOs ([Data Transfer Objects](../../../Data-Transfer-Objects.md)) instead of entities. So, create a new `TodoItemDto` class under the `Services/Dtos` folder:
[Application services](../../../Application-Services.md) typically get and return DTOs ([Data Transfer Objects](../../../Data-Transfer-Objects.md)) instead of entities. So, create a new `TodoItemDto` class under the `Services/Dtos` folder{{if UI=="Blazor"}} of your `TodoApp.Contracts` project{{end}}:
```csharp
namespace TodoApp.Services.Dtos;
namespace TodoApp{{if UI=="Blazor"}}.Contracts{{end}}.Services.Dtos;
public class TodoItemDto
{
@ -216,18 +234,49 @@ public class TodoItemDto
This is a very simple DTO class that has the same properties as the `TodoItem` entity. Now, we are ready to implement our use-cases.
{{if UI=="Blazor"}}
### The Application Service Interface
Create a `ITodoAppService` interface under the `Services` folder of the `TodoApp.Contracts` project, as shown below:
```csharp
using TodoApp.Contracts.Services.Dtos;
using Volo.Abp.Application.Services;
namespace TodoApp.Contracts.Services;
public interface ITodoAppService : IApplicationService
{
Task<List<TodoItemDto>> GetListAsync();
Task<TodoItemDto> CreateAsync(string text);
Task DeleteAsync(Guid id);
}
```
{{end}}
### The Application Service Implementation
Create a `TodoAppService` class under the `Services` folder of your project, as shown below:
Create a `TodoAppService` class under the `Services` folder of {{if UI=="Blazor"}}your `TodoApp.Host` project{{else}}your project{{end}}, as shown below:
```csharp
{{if UI=="Blazor"}}
using TodoApp.Contracts.Services;
using TodoApp.Contracts.Services.Dtos;
using TodoApp.Host.Entities;
using Volo.Abp.Application.Services;
{{else}}
using TodoApp.Entities;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
{{end}}
namespace TodoApp.Services;
namespace TodoApp{{if UI=="Blazor"}}.Host{{end}}.Services;
public class TodoAppService : ApplicationService
public class TodoAppService : ApplicationService{{if UI=="Blazor"}}, ITodoAppService{{end}}
{
private readonly IRepository<TodoItem, Guid> _todoItemRepository;
@ -472,23 +521,29 @@ If you open [Swagger UI](https://swagger.io/tools/swagger-ui/) by entering the `
![todo-api](../todo-api.png)
{{else if UI=="BlazorServer"}}
{{else if UI=="Blazor" || UI=="BlazorServer"}}
### Index.razor.cs
Open the `Index.razor.cs` file in the `Pages` folder and replace the content with the following code block:
Open the `Index.razor.cs` file in the `Pages` folder{{if UI=="Blazor"}} in your `Todo.Blazor` project{{end}} and replace the content with the following code block:
```csharp
{{if UI=="Blazor"}}
using Microsoft.AspNetCore.Components;
using TodoApp.Contracts.Services;
using TodoApp.Contracts.Services.Dtos;
{{else}}
using Microsoft.AspNetCore.Components;
using TodoApp.Services;
using TodoApp.Services.Dtos;
{{end}}
namespace TodoApp.Pages;
public partial class Index
{
[Inject]
private TodoAppService TodoAppService { get; set; }
private {{if UI=="Blazor"}}ITodoAppService{{else}}TodoAppService{{end}} TodoAppService { get; set; }
private List<TodoItemDto> TodoItems { get; set; } = new List<TodoItemDto>();
private string NewTodoText { get; set; }
@ -514,7 +569,7 @@ public partial class Index
}
```
This class uses the `TodoAppService` to get the list of todo items. It manipulates the `TodoItems` list after create and delete operations. This way, we don't need to refresh the whole todo list from the server.
This class uses the {{if UI=="Blazor"}}`ITodoAppService`{{else}}`TodoAppService`{{end}} to get the list of todo items. It manipulates the `TodoItems` list after create and delete operations. This way, we don't need to refresh the whole todo list from the server.
### Index.razor
@ -592,7 +647,7 @@ As the final touch, open the `Index.razor.css` file in the `Pages` folder and re
This is a simple styling for the todo page. We believe that you can do much better :)
Now, you can run the application again to see the result.
Now, you can run the {{if UI=="Blazor"}}`TodoApp.Host` project{{else}}application{{end}} again to see the result.
{{else if UI=="NG"}}

BIN
docs/en/Tutorials/Todo/Single-Layer/todo-single-layer-ui-initial.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 256 KiB

BIN
docs/en/Tutorials/Todo/todo-list.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 23 KiB

BIN
docs/en/Tutorials/Todo/todo-ui-initial.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 23 KiB

BIN
docs/en/Tutorials/images/blazor-edit-book-modal-2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 45 KiB

BIN
docs/en/Tutorials/images/blazor-new-book-modal-2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

BIN
docs/en/Tutorials/images/book-create-modal-with-author-2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

BIN
docs/en/Tutorials/images/bookstore-added-authors-to-modals-2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 48 KiB

BIN
docs/en/Tutorials/images/bookstore-angular-author-selection-2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 43 KiB

BIN
docs/en/Tutorials/images/bookstore-confirmation-popup-2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 29 KiB

BIN
docs/en/Tutorials/images/bookstore-final-actions-dropdown-2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/en/Tutorials/images/bookstore-new-book-form-v3.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 38 KiB

9
docs/en/UI/Angular/Account-Module.md

@ -61,16 +61,23 @@ npm install @volo/abp.ng.account
Open the `app.module.ts` and add `AccountPublicConfigModule.forRoot()` to the imports array as shown below:
> Ensure that the `Account Layout Module` has been added if you are using the Lepton X theme. If you miss the step, you will get an error message that says `Account layout not found. Please check your configuration. If you are using LeptonX, please make sure you have added "AccountLayoutModule.forRoot()" to your app.module configuration.` when you try to access the account pages. Otherwise, you can skip adding the `AccountLayoutModule` step.
```js
// app.module.ts
import { AccountPublicConfigModule } from '@volo/abp.ng.account/public/config';
// if you are using or want to use Lepton X, you should add AccountLayoutModule
// import { AccountLayoutModule } from '@volosoft/abp.ng.theme.lepton-x/account'
//...
@NgModule({
imports: [
//...
AccountPublicConfigModule.forRoot()
AccountPublicConfigModule.forRoot(),
// AccountLayoutModule.forRoot() // Only for Lepton X
],
//...
})

14
docs/en/UI/Angular/Quick-Start.md

@ -37,19 +37,9 @@ This command will prepare a solution with an Angular and a .NET Core project in
To continue reading without checking other methods, visit [Angular project structure section](#angular-project-structure).
### 2. Direct Download
### 2. Generating a CLI Command from Get Started Page
You may [download a solution scaffold directly on ABP.io](https://abp.io/get-started) if you are more comfortable with GUI or simply want to try ABP without installing the CLI.
Please do the following:
1. Click on the "DIRECT DOWNLOAD" tab.
2. Fill out the short form about your project.
3. Click on the "Create now" button.
...and a customized download will start in a few seconds.
To avoid IDE warnings, run `yarn` or `npm install` in the Angular root folder before you continue to the next section. It is not imperative but recommended.
You can generate a CLI command on the [get started page of the abp.io website](https://abp.io/get-started). Then, use the command on your terminal to create a new [Startup Template](../../Startup-Templates/Index.md).
## Angular Project Structure

BIN
docs/en/images/bookstore-home-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
docs/en/images/bookstore-login-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

1
docs/zh-Hans/CLI.md

@ -129,6 +129,7 @@ abp new Acme.BookStore
* `--ui` 或者 `-u`: 指定ui框架.默认`mvc`框架.其他选项:
* `mvc`: ASP.NET Core MVC.
* `angular`: Angular.
* `blazor`: Blazor UI.
* `blazor-server`: Blazor Server.
* `none`: 不包含UI.
* `--database-provider` 或 `-d`: 或者 `-d`: 指定数据库提供程序.默认是 `ef`.其他选项:

2
framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs

@ -1,5 +1,6 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting.StaticWebAssets;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
@ -26,6 +27,7 @@ public class AbpAspNetCoreComponentsServerModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
StaticWebAssetsLoader.UseStaticWebAssets(context.Services.GetHostingEnvironment(), context.Services.GetConfiguration());
context.Services.AddHttpClient();
var serverSideBlazorBuilder = context.Services.AddServerSideBlazor(options =>
{

9
framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/LayoutHooks/LayoutHook.razor.cs

@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components;
@ -26,6 +25,7 @@ public partial class LayoutHook : ComponentBase
if (LayoutHookOptions.Value.Hooks.TryGetValue(Name, out var layoutHooks))
{
layoutHooks = layoutHooks
.Where(IsComponentBase)
.WhereIf(string.IsNullOrWhiteSpace(Layout), x => x.Layout == Layout)
.ToList();
}
@ -36,4 +36,9 @@ public partial class LayoutHook : ComponentBase
return Task.CompletedTask;
}
protected virtual bool IsComponentBase(LayoutHookInfo layoutHook)
{
return typeof(ComponentBase).IsAssignableFrom(layoutHook.ComponentType);
}
}

11
framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Components/LayoutHook/LayoutHookViewComponent.cs

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.Ui.LayoutHooks;
@ -17,11 +18,17 @@ public class LayoutHookViewComponent : AbpViewComponent
public virtual IViewComponentResult Invoke(string name, string layout)
{
var hooks = Options.Hooks.GetOrDefault(name)?.ToArray() ?? Array.Empty<LayoutHookInfo>();
var hooks = Options.Hooks.GetOrDefault(name)?.Where(IsViewComponent).ToArray()
?? Array.Empty<LayoutHookInfo>();
return View(
"~/Volo/Abp/AspNetCore/Mvc/UI/Components/LayoutHook/Default.cshtml",
new LayoutHookViewModel(hooks, layout)
);
}
protected virtual bool IsViewComponent(LayoutHookInfo layoutHook)
{
return typeof(ViewComponent).IsAssignableFrom(layoutHook.ComponentType);
}
}

5
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs

@ -26,6 +26,11 @@ public class AbpApplicationLocalizationAppService :
public async Task<ApplicationLocalizationDto> GetAsync(ApplicationLocalizationRequestDto input)
{
if (!CultureHelper.IsValidCultureCode(input.CultureName))
{
throw new AbpException("The selected culture is not valid! Make sure you enter a valid culture name.");
}
using (CultureHelper.Use(input.CultureName))
{
var resources = LocalizationOptions

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs

@ -36,7 +36,7 @@ public class AbpExceptionPageFilter : IAsyncPageFilter, ITransientDependency
var pageHandlerExecutedContext = await next();
if (pageHandlerExecutedContext.Exception == null)
{
return; ;
return;
}
await HandleAndWrapException(pageHandlerExecutedContext);

4
framework/src/Volo.Abp.Auditing.Contracts/Volo/Abp/Auditing/IHasEntityVersion.cs

@ -1,7 +1,7 @@
namespace Volo.Abp.Auditing;
/// <summary>
/// A version value that is increased whenever the entity is changed.
/// A standard interface for automatic versioning of your entities.
/// </summary>
public interface IHasEntityVersion
{
@ -9,4 +9,4 @@ public interface IHasEntityVersion
/// A version value that is increased whenever the entity is changed.
/// </summary>
int EntityVersion { get; }
}
}

1
framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperExtensibleDtoExtensions.cs

@ -36,6 +36,7 @@ public static class AbpAutoMapperExtensibleDtoExtensions
return result;
})
)
.ForSourceMember(x => x.ExtraProperties, x => x.DoNotValidate())
.AfterMap((source, destination, context) =>
{
if (mapToRegularProperties)

3
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs

@ -417,7 +417,8 @@ public abstract class ProjectCreationCommandBase
protected async Task RunBundleForBlazorWasmOrMauiBlazorTemplateAsync(ProjectBuildArgs projectArgs)
{
if (AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) && projectArgs.UiFramework is UiFramework.Blazor or UiFramework.MauiBlazor)
if ((AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) || AppNoLayersTemplateBase.IsAppNoLayersTemplate(projectArgs.TemplateName))
&& projectArgs.UiFramework is UiFramework.Blazor or UiFramework.MauiBlazor)
{
var isWebassembly = projectArgs.UiFramework == UiFramework.Blazor;
var message = isWebassembly ? "Generating bundles for Blazor Wasm" : "Generating bundles for MAUI Blazor";

13
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMigrateDatabaseChangeStep.cs

@ -0,0 +1,13 @@
using System;
using System.Linq;
namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps;
public class AppNoLayersMigrateDatabaseChangeStep : ProjectBuildPipelineStep
{
public override void Execute(ProjectBuildContext context)
{
var file = context.Files.FirstOrDefault(file => file.Name.EndsWith("/migrate-database.ps1"));
file?.SetContent(file.Content.Replace("MyCompanyName.MyProjectName", "MyCompanyName.MyProjectName.Host"));
}
}

57
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs

@ -0,0 +1,57 @@
using System;
using System.Linq;
namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps;
public class AppNoLayersMoveProjectsStep : ProjectBuildPipelineStep
{
public override void Execute(ProjectBuildContext context)
{
MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client",
"/aspnet-core/MyCompanyName.MyProjectName.Blazor");
MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server",
"/aspnet-core/MyCompanyName.MyProjectName.Host");
MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared",
"/aspnet-core/MyCompanyName.MyProjectName.Contracts");
ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Client\\MyCompanyName.MyProjectName.Blazor.csproj",
"MyCompanyName.MyProjectName.Blazor\\MyCompanyName.MyProjectName.Blazor.csproj");
ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Server\\MyCompanyName.MyProjectName.Host.csproj",
"MyCompanyName.MyProjectName.Host\\MyCompanyName.MyProjectName.Host.csproj");
ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Server.Mongo\\MyCompanyName.MyProjectName.Host.csproj",
"MyCompanyName.MyProjectName.Host\\MyCompanyName.MyProjectName.Host.csproj");
ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Shared\\MyCompanyName.MyProjectName.Contracts.csproj",
"MyCompanyName.MyProjectName.Contracts\\MyCompanyName.MyProjectName.Contracts.csproj");
ModifyProjectFiles(context, "..\\Shared\\MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared.csproj",
"..\\MyCompanyName.MyProjectName.Contracts\\MyCompanyName.MyProjectName.Contracts.csproj");
ModifyProjectFiles(context, "..\\Client\\MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj",
"..\\MyCompanyName.MyProjectName.Blazor\\MyCompanyName.MyProjectName.Blazor.csproj");
}
public void MoveFiles(ProjectBuildContext context, string projectFolder, string newProjectFolder)
{
var fileEntries = context.Files.Where(file => file.Name.StartsWith(projectFolder));
foreach (var fileEntry in fileEntries)
{
fileEntry.SetName(fileEntry.Name.ReplaceFirst(projectFolder, newProjectFolder));
}
}
public void ModifySolutionFile(ProjectBuildContext context, string pathInSlnFile, string newPathInSlnFile)
{
var slnFile = context.Files.First(file => file.Name.EndsWith(".sln"));
slnFile.SetContent(slnFile.Content.Replace($"\"{pathInSlnFile}\"", $"\"{newPathInSlnFile}\""));
}
public void ModifyProjectFiles(ProjectBuildContext context, string oldContent, string newContent)
{
var projectFiles = context.Files.Where(file => file.Name.EndsWith(".csproj"));
foreach (var projectFile in projectFiles)
{
projectFile.SetContent(projectFile.Content.Replace(oldContent, newContent));
}
}
}

50
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs

@ -73,6 +73,31 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
$"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Components",
"Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic"
);
ReplacePackageReferenceWithProjectReference(
context,
"/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj",
$"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}",
@"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj"
);
ChangeNamespaceAndKeyword(
context,
"/MyCompanyName.MyProjectName.Host/MyProjectNameServerModule.cs",
$"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling",
"Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling",
$"{defaultThemeName}ThemeBundles.Styles.Global",
"BasicThemeBundles.Styles.Global"
);
ChangeNamespaceAndKeyword(
context,
"/MyCompanyName.MyProjectName.Host/MyProjectNameServerModule.cs",
$"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}",
"Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic",
$"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule",
"AbpAspNetCoreMvcUiBasicThemeModule"
);
#endregion
@ -174,6 +199,31 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme",
"Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme"
);
ReplacePackageReferenceWithProjectReference(
context,
"/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj",
"Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX",
@"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj"
);
ChangeNamespaceAndKeyword(
context,
"/MyCompanyName.MyProjectName.Host/MyProjectNameServerModule.cs",
"Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling",
"Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling",
"LeptonXThemeBundles.Styles.Global",
"LeptonThemeBundles.Styles.Global"
);
ChangeNamespaceAndKeyword(
context,
"/MyCompanyName.MyProjectName.Host/MyProjectNameServerModule.cs",
"Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX",
"Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton",
"AbpAspNetCoreMvcUiLeptonXThemeModule",
"AbpAspNetCoreMvcUiLeptonThemeModule"
);
#endregion

44
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs

@ -29,15 +29,19 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc.Mongo"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host.Mongo"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server.Mongo"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo", projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo"));
break;
case DatabaseProvider.MongoDb:
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server", projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server"));
steps.Add(new MoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo", "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Mvc.Mongo", "MyCompanyName.MyProjectName.Mvc"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Host.Mongo", "MyCompanyName.MyProjectName.Host"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server.Mongo", "MyCompanyName.MyProjectName.Blazor.Server"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo", "MyCompanyName.MyProjectName.Blazor.WebAssembly.Server"));
break;
}
@ -49,6 +53,7 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Host", "MyCompanyName.MyProjectName"));
RemoveBlazorWasmProjects(steps);
break;
case UiFramework.None:
@ -56,13 +61,33 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Host", "MyCompanyName.MyProjectName"));
RemoveBlazorWasmProjects(steps);
break;
case UiFramework.Blazor:
steps.Add(new RemoveFolderStep("/angular"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server",
"MyCompanyName.MyProjectName.Host"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Client",
"MyCompanyName.MyProjectName.Blazor"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared",
"MyCompanyName.MyProjectName.Contracts"));
steps.Add(new AppNoLayersMoveProjectsStep());
steps.Add(new AppNoLayersMigrateDatabaseChangeStep());
steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly"));
break;
case UiFramework.BlazorServer:
steps.Add(new RemoveFolderStep("/angular"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server", "MyCompanyName.MyProjectName"));
RemoveBlazorWasmProjects(steps);
break;
case UiFramework.NotSpecified:
@ -71,11 +96,11 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Mvc", "MyCompanyName.MyProjectName"));
RemoveBlazorWasmProjects(steps);
break;
case UiFramework.Blazor:
throw new AbpException("app-nolayers doesn't support blazor wasm.");
break;
default:
throw new AbpException("Unkown UI framework: " + context.BuildArgs.UiFramework);
}
steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName/Migrations"));
@ -94,6 +119,17 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase
return steps;
}
private static void RemoveBlazorWasmProjects(List<ProjectBuildPipelineStep> steps)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server",
projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Client",
projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared",
projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared"));
steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly"));
}
protected void ConfigureDockerFiles(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
switch (context.BuildArgs.UiFramework)

17
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs

@ -216,7 +216,7 @@ public abstract class AppTemplateBase : TemplateInfo
RemoveThemeLogoFolders(context, steps);
if (IsDefaultThemeForTemplate(context.BuildArgs.Theme.Value))
if (IsDefaultThemeForTemplate(context.BuildArgs))
{
return;
}
@ -238,15 +238,17 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
private static bool IsDefaultThemeForTemplate(Theme theme)
private static bool IsDefaultThemeForTemplate(ProjectBuildArgs args)
{
var defaultThemesForTemplates = new[]
var templateThemes = new Dictionary<string, Theme>
{
AppTemplate.DefaultTheme, AppProTemplate.DefaultTheme,
AppNoLayersTemplate.DefaultTheme, AppNoLayersProTemplate.DefaultTheme
{ AppTemplate.TemplateName, AppTemplate.DefaultTheme },
{ AppProTemplate.TemplateName, AppProTemplate.DefaultTheme },
{ AppNoLayersTemplate.TemplateName, AppNoLayersTemplate.DefaultTheme },
{ AppNoLayersProTemplate.TemplateName, AppNoLayersProTemplate.DefaultTheme }
};
return defaultThemesForTemplates.Any(defaultTheme => defaultTheme == theme);
return templateThemes.TryGetValue(args.TemplateName!, out var templateTheme) && templateTheme == args.Theme;
}
private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List<ProjectBuildPipelineStep> steps, bool isProTemplate, UiFramework uiFramework)
@ -584,7 +586,8 @@ public abstract class AppTemplateBase : TemplateInfo
"https://localhost:44306",
"https://localhost:44307",
"https://localhost:44308",
"https://localhost:44309"
"https://localhost:44309",
"https://localhost:44310"
}
)
);

4
framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo.Abp.EntityFrameworkCore.MySQL.csproj

@ -19,8 +19,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0-silver.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.2" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0" />
</ItemGroup>
</Project>

5
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs

@ -227,6 +227,11 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
ChangeTracker.Tracked += ChangeTracker_Tracked;
ChangeTracker.StateChanged += ChangeTracker_StateChanged;
if (UnitOfWorkManager is AlwaysDisableTransactionsUnitOfWorkManager)
{
Database.AutoTransactionBehavior = AutoTransactionBehavior.Never;
}
}
protected virtual void ChangeTracker_Tracked(object sender, EntityTrackedEventArgs e)

3
framework/src/Volo.Abp.Json.Newtonsoft/Volo/Abp/Json/Newtonsoft/AbpDateTimeConverter.cs

@ -6,12 +6,13 @@ using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Reflection;
using Volo.Abp.Timing;
namespace Volo.Abp.Json.Newtonsoft;
public class AbpDateTimeConverter : DateTimeConverterBase
public class AbpDateTimeConverter : DateTimeConverterBase, ITransientDependency
{
private readonly string _dateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";
private readonly DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;

8
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfo.cs

@ -1,4 +1,5 @@
using System;
using System.Globalization;
using JetBrains.Annotations;
namespace Volo.Abp.Localization;
@ -15,9 +16,13 @@ public class LanguageInfo : ILanguageInfo
[NotNull]
public virtual string DisplayName { get; protected set; }
[NotNull]
public virtual string TwoLetterISOLanguageName { get; protected set; }
[CanBeNull]
public virtual string FlagIcon { get; set; }
protected LanguageInfo()
{
@ -49,5 +54,8 @@ public class LanguageInfo : ILanguageInfo
DisplayName = !displayName.IsNullOrWhiteSpace()
? displayName
: cultureName;
TwoLetterISOLanguageName = new CultureInfo(cultureName)
.TwoLetterISOLanguageName;
}
}

46
modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.Account.Application.Contracts",
"hash": "18f3a9ff4cc0891a58b7fe3e5ef09d93",
"hash": "392da50100d94bd18adbc7c41cd9efce",
"contents": [
{
"namespace": "Volo.Abp.Account",
@ -11,6 +11,50 @@
"name": "AbpIdentityApplicationContractsModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAccountApplicationContractsModule",
"summary": null

141
modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.Account.Application",
"hash": "fe4875f87824e53aeda7ec1d51d807b1",
"hash": "ebd6f98a2003938944d5a3790daf20af",
"contents": [
{
"namespace": "Volo.Abp.Account",
@ -26,6 +26,50 @@
"name": "AbpEmailingModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAccountApplicationModule",
"summary": null
@ -35,61 +79,74 @@
"baseClass": {
"name": "ApplicationService",
"namespace": "Volo.Abp.Application.Services",
"declaringAssemblyName": "Volo.Abp.Ddd.Application"
"declaringAssemblyName": "Volo.Abp.Ddd.Application",
"fullName": "Volo.Abp.Application.Services.ApplicationService"
},
"implementingInterfaces": [
{
"name": "IApplicationService",
"namespace": "Volo.Abp.Application.Services",
"declaringAssemblyName": "Volo.Abp.Ddd.Application.Contracts"
"declaringAssemblyName": "Volo.Abp.Ddd.Application.Contracts",
"fullName": "Volo.Abp.Application.Services.IApplicationService"
},
{
"name": "IRemoteService",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core"
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IRemoteService"
},
{
"name": "IAvoidDuplicateCrossCuttingConcerns",
"namespace": "Volo.Abp.Aspects",
"declaringAssemblyName": "Volo.Abp.Core"
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Aspects.IAvoidDuplicateCrossCuttingConcerns"
},
{
"name": "IValidationEnabled",
"namespace": "Volo.Abp.Validation",
"declaringAssemblyName": "Volo.Abp.Validation"
"declaringAssemblyName": "Volo.Abp.Validation",
"fullName": "Volo.Abp.Validation.IValidationEnabled"
},
{
"name": "IUnitOfWorkEnabled",
"namespace": "Volo.Abp.Uow",
"declaringAssemblyName": "Volo.Abp.Uow"
"declaringAssemblyName": "Volo.Abp.Uow",
"fullName": "Volo.Abp.Uow.IUnitOfWorkEnabled"
},
{
"name": "IAuditingEnabled",
"namespace": "Volo.Abp.Auditing",
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts"
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts",
"fullName": "Volo.Abp.Auditing.IAuditingEnabled"
},
{
"name": "IGlobalFeatureCheckingEnabled",
"namespace": "Volo.Abp.GlobalFeatures",
"declaringAssemblyName": "Volo.Abp.GlobalFeatures"
"declaringAssemblyName": "Volo.Abp.GlobalFeatures",
"fullName": "Volo.Abp.GlobalFeatures.IGlobalFeatureCheckingEnabled"
},
{
"name": "ITransientDependency",
"namespace": "Volo.Abp.DependencyInjection",
"declaringAssemblyName": "Volo.Abp.Core"
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.DependencyInjection.ITransientDependency"
},
{
"name": "IAccountAppService",
"namespace": "Volo.Abp.Account",
"declaringAssemblyName": "Volo.Abp.Account.Application.Contracts"
"declaringAssemblyName": "Volo.Abp.Account.Application.Contracts",
"fullName": "Volo.Abp.Account.IAccountAppService"
}
],
"methods": [
{
"returnType": "IdentityUserDto",
"isAsync": true,
"name": "RegisterAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "RegisterDto",
@ -100,9 +157,12 @@
},
{
"returnType": "Void",
"isAsync": true,
"name": "SendPasswordResetCodeAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "SendPasswordResetCodeDto",
@ -113,9 +173,12 @@
},
{
"returnType": "Boolean",
"isAsync": true,
"name": "VerifyPasswordResetTokenAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "VerifyPasswordResetTokenInput",
@ -126,9 +189,12 @@
},
{
"returnType": "Void",
"isAsync": true,
"name": "ResetPasswordAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "ResetPasswordDto",
@ -147,68 +213,84 @@
"baseClass": {
"name": "IdentityAppServiceBase",
"namespace": "Volo.Abp.Identity",
"declaringAssemblyName": "Volo.Abp.Identity.Application"
"declaringAssemblyName": "Volo.Abp.Identity.Application",
"fullName": "Volo.Abp.Identity.IdentityAppServiceBase"
},
"implementingInterfaces": [
{
"name": "IApplicationService",
"namespace": "Volo.Abp.Application.Services",
"declaringAssemblyName": "Volo.Abp.Ddd.Application.Contracts"
"declaringAssemblyName": "Volo.Abp.Ddd.Application.Contracts",
"fullName": "Volo.Abp.Application.Services.IApplicationService"
},
{
"name": "IRemoteService",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core"
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IRemoteService"
},
{
"name": "IAvoidDuplicateCrossCuttingConcerns",
"namespace": "Volo.Abp.Aspects",
"declaringAssemblyName": "Volo.Abp.Core"
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Aspects.IAvoidDuplicateCrossCuttingConcerns"
},
{
"name": "IValidationEnabled",
"namespace": "Volo.Abp.Validation",
"declaringAssemblyName": "Volo.Abp.Validation"
"declaringAssemblyName": "Volo.Abp.Validation",
"fullName": "Volo.Abp.Validation.IValidationEnabled"
},
{
"name": "IUnitOfWorkEnabled",
"namespace": "Volo.Abp.Uow",
"declaringAssemblyName": "Volo.Abp.Uow"
"declaringAssemblyName": "Volo.Abp.Uow",
"fullName": "Volo.Abp.Uow.IUnitOfWorkEnabled"
},
{
"name": "IAuditingEnabled",
"namespace": "Volo.Abp.Auditing",
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts"
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts",
"fullName": "Volo.Abp.Auditing.IAuditingEnabled"
},
{
"name": "IGlobalFeatureCheckingEnabled",
"namespace": "Volo.Abp.GlobalFeatures",
"declaringAssemblyName": "Volo.Abp.GlobalFeatures"
"declaringAssemblyName": "Volo.Abp.GlobalFeatures",
"fullName": "Volo.Abp.GlobalFeatures.IGlobalFeatureCheckingEnabled"
},
{
"name": "ITransientDependency",
"namespace": "Volo.Abp.DependencyInjection",
"declaringAssemblyName": "Volo.Abp.Core"
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.DependencyInjection.ITransientDependency"
},
{
"name": "IProfileAppService",
"namespace": "Volo.Abp.Account",
"declaringAssemblyName": "Volo.Abp.Account.Application.Contracts"
"declaringAssemblyName": "Volo.Abp.Account.Application.Contracts",
"fullName": "Volo.Abp.Account.IProfileAppService"
}
],
"methods": [
{
"returnType": "ProfileDto",
"isAsync": true,
"name": "GetAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": []
},
{
"returnType": "ProfileDto",
"isAsync": true,
"name": "UpdateAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "UpdateProfileDto",
@ -219,9 +301,12 @@
},
{
"returnType": "Void",
"isAsync": true,
"name": "ChangePasswordAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "ChangePasswordInput",

46
modules/account/src/Volo.Abp.Account.HttpApi.Client/Volo.Abp.Account.HttpApi.Client.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.Account.HttpApi.Client",
"hash": "d6a43f6e023a1cd778d9a196292e0f5e",
"hash": "5a1716ad59fa19da3009381a4d0d3e1d",
"contents": [
{
"namespace": "Volo.Abp.Account",
@ -16,6 +16,50 @@
"name": "AbpHttpClientModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAccountHttpApiClientModule",
"summary": null

46
modules/account/src/Volo.Abp.Account.HttpApi/Volo.Abp.Account.HttpApi.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.Account.HttpApi",
"hash": "e56c740e001afd8457c08771c74c924e",
"hash": "caa7279a6d55f90db90b3ec2313a4e12",
"contents": [
{
"namespace": "Volo.Abp.Account",
@ -21,6 +21,50 @@
"name": "AbpAspNetCoreMvcModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAccountHttpApiModule",
"summary": null

46
modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.Account.Web.IdentityServer",
"hash": "40cd5b48b3b63d21ee3621d0b9e576e5",
"hash": "2d4f5a62fb39b4e4ca8634b01cbeac15",
"contents": [
{
"namespace": "Volo.Abp.Account.Web",
@ -16,6 +16,50 @@
"name": "AbpIdentityServerDomainModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAccountWebIdentityServerModule",
"summary": null

46
modules/account/src/Volo.Abp.Account.Web.OpenIddict/Volo.Abp.Account.Web.OpenIddict.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.Account.Web.OpenIddict",
"hash": "104f37be416769a40eba2f7a3df6f1f4",
"hash": "29785246e5bdaa8010c7da236efe3ba1",
"contents": [
{
"namespace": "Volo.Abp.Account.Web",
@ -16,6 +16,50 @@
"name": "AbpOpenIddictAspNetCoreModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAccountWebOpenIddictModule",
"summary": null

46
modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.Account.Web",
"hash": "7eab8dddb7f525a088333e05f31edba2",
"hash": "93b7e37fb41330719f0911b2c1b31cf0",
"contents": [
{
"namespace": "Volo.Abp.Account.Web",
@ -31,6 +31,50 @@
"name": "AbpExceptionHandlingModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAccountWebModule",
"summary": null

46
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo.Abp.AuditLogging.Domain.Shared.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.AuditLogging.Domain.Shared",
"hash": "361bc4f3cf245220e1edb554f087f209",
"hash": "8e82f96ec1349d214e72c8fb4f902460",
"contents": [
{
"namespace": "Volo.Abp.AuditLogging",
@ -11,6 +11,50 @@
"name": "AbpValidationModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAuditLoggingDomainSharedModule",
"summary": null

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ar.json

@ -14,6 +14,7 @@
"HasException": "لديه استثناء",
"IpAddress": "عنوان IP",
"Time": "زمن",
"Date": "تاريخ",
"Duration": "مدة",
"Detail": "التفاصيل",
"Overall": "شاملة",
@ -23,6 +24,8 @@
"BrowserInfo": "معلومات المتصفح",
"Url": "عنوان Url",
"UserName": "اسم االمستخدم",
"TenantImpersonator": "منتحل المستأجر",
"UserImpersonator": "مقلد المستخدم",
"UrlFilter": "عامل تصفية عنوان URL",
"Exceptions": "استثناءات",
"Comments": "تعليقات",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de-DE.json

@ -14,6 +14,7 @@
"HasException": "Hat Ausnahme",
"IpAddress": "IP-Adresse",
"Time": "Zeitpunkt",
"Date": "Datum",
"Duration": "Dauer",
"Detail": "Details",
"Overall": "Insgesamt",
@ -23,6 +24,8 @@
"BrowserInfo": "Browser-Informationen",
"Url": "URL",
"UserName": "Benutzername",
"TenantImpersonator": "Mieter-Imitator",
"UserImpersonator": "Benutzer-Imitator",
"UrlFilter": "URL-Filter",
"Exceptions": "Ausnahmen",
"Comments": "Kommentare",

1
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/en.json

@ -14,6 +14,7 @@
"HasException": "Has Exception",
"IpAddress": "IP Address",
"Time": "Time",
"Date": "Date",
"Duration": "Duration",
"Detail": "Detail",
"Overall": "Overall",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/es.json

@ -14,6 +14,7 @@
"HasException": "Tiene error",
"IpAddress": "Dirección Ip",
"Time": "Tiempo",
"Date": "Fecha",
"Duration": "Duración",
"Detail": "Detalles",
"Overall": "En general",
@ -23,6 +24,8 @@
"BrowserInfo": "Informacion de buscador",
"Url": "Url",
"UserName": "Nombre de usuario",
"TenantImpersonator": "Imitador de inquilinos",
"UserImpersonator": "Imitadora de usuario",
"UrlFilter": "Filtro de URL",
"Exceptions": "Excepciones",
"Comments": "Comentarios",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fi.json

@ -14,6 +14,7 @@
"HasException": "Onko poikkeus",
"IpAddress": "IP-osoite",
"Time": "Aika",
"Date": "Päivämäärä",
"Duration": "Kesto",
"Detail": "Yksityiskohta",
"Overall": "Yleensä ottaen",
@ -23,6 +24,8 @@
"BrowserInfo": "Selaimen tiedot",
"Url": "URL-osoite",
"UserName": "Käyttäjänimi",
"TenantImpersonator": "Vuokralaisen jäljittelijä",
"UserImpersonator": "Käyttäjän jäljittelijä",
"UrlFilter": "URL-suodatin",
"Exceptions": "Poikkeukset",
"Comments": "Kommentit",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fr.json

@ -14,6 +14,7 @@
"HasException": "A une exception",
"IpAddress": "Adresse IP",
"Time": "Temps",
"Date": "Date",
"Duration": "Durée",
"Detail": "Détail",
"Overall": "Globalement",
@ -23,6 +24,8 @@
"BrowserInfo": "Informations sur le navigateur",
"Url": "URL",
"UserName": "Nom d'utilisateur",
"TenantImpersonator": "Imitateur de locataire",
"UserImpersonator": "Imitateur d'utilisateur",
"UrlFilter": "Filtre d'URL",
"Exceptions": "Exceptions",
"Comments": "commentaires",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hi.json

@ -14,6 +14,7 @@
"HasException": "अपवाद है",
"IpAddress": "आईपी पता",
"Time": "समय",
"Date": "तारीख",
"Duration": "समयांतराल",
"Detail": "विस्तार",
"Overall": "संपूर्ण",
@ -23,6 +24,8 @@
"BrowserInfo": "ब्राउज़र जानकारी",
"Url": "यूआरएल",
"UserName": "उपयोगकर्ता नाम",
"TenantImpersonator": "किरायेदार प्रतिरूपणकर्ता",
"UserImpersonator": "उपयोगकर्ता प्रतिरूपणकर्ता",
"UrlFilter": "उर फिल्टर",
"Exceptions": "अपवाद",
"Comments": "टिप्पणियाँ",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/it.json

@ -14,6 +14,7 @@
"HasException": "Ha un'eccezione",
"IpAddress": "Indirizzo IP",
"Time": "Orario",
"Date": "Data",
"Duration": "Durata",
"Detail": "Dettaglio",
"Overall": "Complessivo",
@ -23,6 +24,8 @@
"BrowserInfo": "Informazioni sul browser",
"Url": "Url",
"UserName": "Nome utente",
"TenantImpersonator": "Sosia di inquilino",
"UserImpersonator": "Impersonatore dell'utente",
"UrlFilter": "Filtro URL",
"Exceptions": "Eccezioni",
"Comments": "Commenti",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pt-BR.json

@ -14,6 +14,7 @@
"HasException": "Tem exceção",
"IpAddress": "Endereço de IP",
"Time": "Tempo",
"Date": "Encontro",
"Duration": "Duração",
"Detail": "Detalhe",
"Overall": "No geral",
@ -23,6 +24,8 @@
"BrowserInfo": "Informação do navegador",
"Url": "Url",
"UserName": "Nome do usuário",
"TenantImpersonator": "Inquilino Imitador",
"UserImpersonator": "Imitador de usuário",
"UrlFilter": "Filtro de Url",
"Exceptions": "Exceções",
"Comments": "Comentários",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ru.json

@ -14,6 +14,7 @@
"HasException": "Имеет исключение",
"IpAddress": "Айпи адрес",
"Time": "Время",
"Date": "Дата",
"Duration": "Продолжительность",
"Detail": "Деталь",
"Overall": "В общем и целом",
@ -23,6 +24,8 @@
"BrowserInfo": "Информация о браузере",
"Url": "URL",
"UserName": "Имя пользователя",
"TenantImpersonator": "Имитатор арендатора",
"UserImpersonator": "Имитатор пользователя",
"UrlFilter": "URL-фильтр",
"Exceptions": "Исключения",
"Comments": "Комментарии",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sk.json

@ -14,6 +14,7 @@
"HasException": "Má výnimku",
"IpAddress": "IP adresa",
"Time": "Čas",
"Date": "Dátum",
"Duration": "Trvanie",
"Detail": "Detail",
"Overall": "Celkovo",
@ -23,6 +24,8 @@
"BrowserInfo": "Informácie o prehliadači",
"Url": "Url",
"UserName": "Meno používateľa",
"TenantImpersonator": "Nájomca imitátor",
"UserImpersonator": "Napodobňovač používateľa",
"UrlFilter": "Filter URL",
"Exceptions": "Výnimky",
"Comments": "Komentáre",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sl.json

@ -14,6 +14,7 @@
"HasException": "Ima napako",
"IpAddress": "Ip naslov",
"Time": "Čas",
"Date": "Datum",
"Duration": "Trajanje",
"Detail": "Podrobnosti",
"Overall": "Splošno",
@ -23,6 +24,8 @@
"BrowserInfo": "Informacije o brskalniku",
"Url": "Url",
"UserName": "Uporabniško ime",
"TenantImpersonator": "Imitator najemnika",
"UserImpersonator": "Oponašalec uporabnika",
"UrlFilter": "Filter po Url",
"Exceptions": "Napake",
"Comments": "Komentarji",

1
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/tr.json

@ -43,6 +43,7 @@
"PropertyTypeFullName": "Property Türü",
"ServiceName": "Servis",
"Time": "Tarih",
"Date": "Tarih",
"Url": "Url",
"UserName": "Kullanıcı adı",
"TenantImpersonator": "Kiracı Taklitçisi",

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json

@ -14,6 +14,7 @@
"HasException": "存在异常",
"IpAddress": "IP地址",
"Time": "时间",
"Date": "日期",
"Duration": "持续时间",
"Detail": "详情",
"Overall": "总体",
@ -78,4 +79,4 @@
"Feature:AuditLoggingEnable": "启用审计日志页面",
"Feature:AuditLoggingEnableDescription": "在应用程序中启用审计日志页面."
}
}
}

3
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hant.json

@ -14,6 +14,7 @@
"HasException": "存在異常",
"IpAddress": "IP地址",
"Time": "時間",
"Date": "日期",
"Duration": "持續時間",
"Detail": "詳情",
"Overall": "總體",
@ -78,4 +79,4 @@
"Feature:AuditLoggingEnable": "啟用審計日誌頁面",
"Feature:AuditLoggingEnableDescription": "在應用程序中啟用審計日誌頁面."
}
}
}

802
modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo.Abp.AuditLogging.Domain.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.AuditLogging.Domain",
"hash": "f7ad0bc33e817c4688f827382007cf6b",
"hash": "fa171768247503b44e7e57d4518d2ef8",
"contents": [
{
"namespace": "Volo.Abp.AuditLogging",
@ -31,74 +31,388 @@
"name": "AbpJsonModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAuditLoggingDomainModule",
"summary": null
},
{
"namespace": "Volo.Abp.AuditLogging",
"primaryKeyType": "Guid",
"properties": [
{
"type": "System.Nullable`1[System.Guid]",
"name": "TenantId",
"summary": null
},
{
"type": "System.Guid",
"name": "AuditLogId",
"summary": null
},
{
"type": "System.String",
"name": "ServiceName",
"summary": null
},
{
"type": "System.String",
"name": "MethodName",
"summary": null
},
{
"type": "System.String",
"name": "Parameters",
"summary": null
},
{
"type": "System.DateTime",
"name": "ExecutionTime",
"summary": null
},
{
"type": "System.Int32",
"name": "ExecutionDuration",
"summary": null
},
{
"type": "Volo.Abp.Data.ExtraPropertyDictionary",
"name": "ExtraProperties",
"summary": null
}
],
"contentType": "entity",
"name": "AuditLogAction",
"summary": null
},
{
"namespace": "Volo.Abp.AuditLogging",
"primaryKeyType": "Guid",
"properties": [
{
"type": "System.Guid",
"name": "AuditLogId",
"summary": null
},
{
"type": "System.Nullable`1[System.Guid]",
"name": "TenantId",
"summary": null
},
{
"type": "System.DateTime",
"name": "ChangeTime",
"summary": null
},
{
"type": "Volo.Abp.Auditing.EntityChangeType",
"name": "ChangeType",
"summary": null
},
{
"type": "System.Nullable`1[System.Guid]",
"name": "EntityTenantId",
"summary": null
},
{
"type": "System.String",
"name": "EntityId",
"summary": null
},
{
"type": "System.String",
"name": "EntityTypeFullName",
"summary": null
},
{
"type": "System.Collections.Generic.ICollection`1[Volo.Abp.AuditLogging.EntityPropertyChange]",
"name": "PropertyChanges",
"summary": null
},
{
"type": "Volo.Abp.Data.ExtraPropertyDictionary",
"name": "ExtraProperties",
"summary": null
}
],
"contentType": "entity",
"name": "EntityChange",
"summary": null
},
{
"namespace": "Volo.Abp.AuditLogging",
"primaryKeyType": "Guid",
"properties": [
{
"type": "System.Nullable`1[System.Guid]",
"name": "TenantId",
"summary": null
},
{
"type": "System.Guid",
"name": "EntityChangeId",
"summary": null
},
{
"type": "System.String",
"name": "NewValue",
"summary": null
},
{
"type": "System.String",
"name": "OriginalValue",
"summary": null
},
{
"type": "System.String",
"name": "PropertyName",
"summary": null
},
{
"type": "System.String",
"name": "PropertyTypeFullName",
"summary": null
}
],
"contentType": "entity",
"name": "EntityPropertyChange",
"summary": null
},
{
"baseClass": {
"name": "AggregateRoot<Guid>",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.AggregateRoot<Guid>"
},
"implementingInterfaces": [
{
"name": "IEntity",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IEntity"
},
{
"name": "IEntity<Guid>",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IEntity<Guid>"
},
{
"name": "IAggregateRoot<Guid>",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IAggregateRoot<Guid>"
},
{
"name": "IAggregateRoot",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IAggregateRoot"
},
{
"name": "IGeneratesDomainEvents",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IGeneratesDomainEvents"
},
{
"name": "IHasExtraProperties",
"namespace": "Volo.Abp.Data",
"declaringAssemblyName": "Volo.Abp.ObjectExtending"
"declaringAssemblyName": "Volo.Abp.ObjectExtending",
"fullName": "Volo.Abp.Data.IHasExtraProperties"
},
{
"name": "IHasConcurrencyStamp",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Data"
"declaringAssemblyName": "Volo.Abp.Data",
"fullName": "Volo.Abp.Domain.Entities.IHasConcurrencyStamp"
},
{
"name": "IMultiTenant",
"namespace": "Volo.Abp.MultiTenancy",
"declaringAssemblyName": "Volo.Abp.MultiTenancy"
"declaringAssemblyName": "Volo.Abp.MultiTenancy",
"fullName": "Volo.Abp.MultiTenancy.IMultiTenant"
}
],
"methods": [],
"namespace": "Volo.Abp.AuditLogging",
"primaryKeyType": "Guid",
"collectionProperties": {
"entityChanges": {
"name": "EntityChange",
"namespace": "Volo.Abp.AuditLogging",
"declaringAssemblyName": "Volo.Abp.AuditLogging.Domain"
"declaringAssemblyName": "Volo.Abp.AuditLogging.Domain",
"fullName": "Volo.Abp.AuditLogging.EntityChange"
},
"actions": {
"name": "AuditLogAction",
"namespace": "Volo.Abp.AuditLogging",
"declaringAssemblyName": "Volo.Abp.AuditLogging.Domain"
"declaringAssemblyName": "Volo.Abp.AuditLogging.Domain",
"fullName": "Volo.Abp.AuditLogging.AuditLogAction"
}
},
"navigationProperties": {},
"namespace": "Volo.Abp.AuditLogging",
"primaryKeyType": "Guid",
"properties": [
{
"type": "System.String",
"name": "ApplicationName",
"summary": null
},
{
"type": "System.Nullable`1[System.Guid]",
"name": "UserId",
"summary": null
},
{
"type": "System.String",
"name": "UserName",
"summary": null
},
{
"type": "System.Nullable`1[System.Guid]",
"name": "TenantId",
"summary": null
},
{
"type": "System.String",
"name": "TenantName",
"summary": null
},
{
"type": "System.Nullable`1[System.Guid]",
"name": "ImpersonatorUserId",
"summary": null
},
{
"type": "System.String",
"name": "ImpersonatorUserName",
"summary": null
},
{
"type": "System.Nullable`1[System.Guid]",
"name": "ImpersonatorTenantId",
"summary": null
},
{
"type": "System.String",
"name": "ImpersonatorTenantName",
"summary": null
},
{
"type": "System.DateTime",
"name": "ExecutionTime",
"summary": null
},
{
"type": "System.Int32",
"name": "ExecutionDuration",
"summary": null
},
{
"type": "System.String",
"name": "ClientIpAddress",
"summary": null
},
{
"type": "System.String",
"name": "ClientName",
"summary": null
},
{
"type": "System.String",
"name": "ClientId",
"summary": null
},
{
"type": "System.String",
"name": "CorrelationId",
"summary": null
},
{
"type": "System.String",
"name": "BrowserInfo",
"summary": null
},
{
"type": "System.String",
"name": "HttpMethod",
"summary": null
},
{
"type": "System.String",
"name": "Url",
"summary": null
},
{
"type": "System.String",
"name": "Exceptions",
"summary": null
},
{
"type": "System.String",
"name": "Comments",
"summary": null
},
{
"type": "System.Nullable`1[System.Int32]",
"name": "HttpStatusCode",
"summary": null
},
{
"type": "System.Collections.Generic.ICollection`1[Volo.Abp.AuditLogging.EntityChange]",
"name": "EntityChanges",
"summary": null
},
{
"type": "System.Collections.Generic.ICollection`1[Volo.Abp.AuditLogging.AuditLogAction]",
"name": "Actions",
"summary": null
}
],
"contentType": "aggregateRoot",
"name": "AuditLog",
"summary": null
@ -108,23 +422,457 @@
"entityAnalyzeModel": {
"namespace": "Volo.Abp.AuditLogging",
"primaryKeyType": "Guid",
"collectionProperties": {
"entityChanges": {
"name": "EntityChange",
"namespace": "Volo.Abp.AuditLogging",
"declaringAssemblyName": "Volo.Abp.AuditLogging.Domain"
},
"actions": {
"name": "AuditLogAction",
"namespace": "Volo.Abp.AuditLogging",
"declaringAssemblyName": "Volo.Abp.AuditLogging.Domain"
}
},
"navigationProperties": {},
"properties": [],
"contentType": "entity",
"name": "AuditLog",
"summary": null
},
"implementingInterfaces": [
{
"name": "IRepository<AuditLog, Guid>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IRepository<AuditLog, Guid>"
},
{
"name": "IRepository<AuditLog>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IRepository<AuditLog>"
},
{
"name": "IReadOnlyRepository<AuditLog>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IReadOnlyRepository<AuditLog>"
},
{
"name": "IReadOnlyBasicRepository<AuditLog>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IReadOnlyBasicRepository<AuditLog>"
},
{
"name": "IRepository",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IRepository"
},
{
"name": "IBasicRepository<AuditLog>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IBasicRepository<AuditLog>"
},
{
"name": "IReadOnlyRepository<AuditLog, Guid>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IReadOnlyRepository<AuditLog, Guid>"
},
{
"name": "IReadOnlyBasicRepository<AuditLog, Guid>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IReadOnlyBasicRepository<AuditLog, Guid>"
},
{
"name": "IBasicRepository<AuditLog, Guid>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IBasicRepository<AuditLog, Guid>"
}
],
"methods": [
{
"returnType": "List<AuditLog>",
"name": "GetListAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "sorting",
"isOptional": true
},
{
"type": "Int32",
"name": "maxResultCount",
"isOptional": true
},
{
"type": "Int32",
"name": "skipCount",
"isOptional": true
},
{
"type": "Nullable<DateTime>",
"name": "startTime",
"isOptional": true
},
{
"type": "Nullable<DateTime>",
"name": "endTime",
"isOptional": true
},
{
"type": "String",
"name": "httpMethod",
"isOptional": true
},
{
"type": "String",
"name": "url",
"isOptional": true
},
{
"type": "Nullable<Guid>",
"name": "userId",
"isOptional": true
},
{
"type": "String",
"name": "userName",
"isOptional": true
},
{
"type": "String",
"name": "applicationName",
"isOptional": true
},
{
"type": "String",
"name": "clientIpAddress",
"isOptional": true
},
{
"type": "String",
"name": "correlationId",
"isOptional": true
},
{
"type": "Nullable<Int32>",
"name": "maxExecutionDuration",
"isOptional": true
},
{
"type": "Nullable<Int32>",
"name": "minExecutionDuration",
"isOptional": true
},
{
"type": "Nullable<Boolean>",
"name": "hasException",
"isOptional": true
},
{
"type": "Nullable<HttpStatusCode>",
"name": "httpStatusCode",
"isOptional": true
},
{
"type": "Boolean",
"name": "includeDetails",
"isOptional": true
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "Int64",
"name": "GetCountAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Nullable<DateTime>",
"name": "startTime",
"isOptional": true
},
{
"type": "Nullable<DateTime>",
"name": "endTime",
"isOptional": true
},
{
"type": "String",
"name": "httpMethod",
"isOptional": true
},
{
"type": "String",
"name": "url",
"isOptional": true
},
{
"type": "Nullable<Guid>",
"name": "userId",
"isOptional": true
},
{
"type": "String",
"name": "userName",
"isOptional": true
},
{
"type": "String",
"name": "applicationName",
"isOptional": true
},
{
"type": "String",
"name": "clientIpAddress",
"isOptional": true
},
{
"type": "String",
"name": "correlationId",
"isOptional": true
},
{
"type": "Nullable<Int32>",
"name": "maxExecutionDuration",
"isOptional": true
},
{
"type": "Nullable<Int32>",
"name": "minExecutionDuration",
"isOptional": true
},
{
"type": "Nullable<Boolean>",
"name": "hasException",
"isOptional": true
},
{
"type": "Nullable<HttpStatusCode>",
"name": "httpStatusCode",
"isOptional": true
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "Dictionary<DateTime, Double>",
"name": "GetAverageExecutionDurationPerDayAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "DateTime",
"name": "startDate",
"isOptional": false
},
{
"type": "DateTime",
"name": "endDate",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "EntityChange",
"name": "GetEntityChange",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "entityChangeId",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "List<EntityChange>",
"name": "GetEntityChangeListAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "sorting",
"isOptional": true
},
{
"type": "Int32",
"name": "maxResultCount",
"isOptional": true
},
{
"type": "Int32",
"name": "skipCount",
"isOptional": true
},
{
"type": "Nullable<Guid>",
"name": "auditLogId",
"isOptional": true
},
{
"type": "Nullable<DateTime>",
"name": "startTime",
"isOptional": true
},
{
"type": "Nullable<DateTime>",
"name": "endTime",
"isOptional": true
},
{
"type": "Nullable<EntityChangeType>",
"name": "changeType",
"isOptional": true
},
{
"type": "String",
"name": "entityId",
"isOptional": true
},
{
"type": "String",
"name": "entityTypeFullName",
"isOptional": true
},
{
"type": "Boolean",
"name": "includeDetails",
"isOptional": true
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "Int64",
"name": "GetEntityChangeCountAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Nullable<Guid>",
"name": "auditLogId",
"isOptional": true
},
{
"type": "Nullable<DateTime>",
"name": "startTime",
"isOptional": true
},
{
"type": "Nullable<DateTime>",
"name": "endTime",
"isOptional": true
},
{
"type": "Nullable<EntityChangeType>",
"name": "changeType",
"isOptional": true
},
{
"type": "String",
"name": "entityId",
"isOptional": true
},
{
"type": "String",
"name": "entityTypeFullName",
"isOptional": true
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "EntityChangeWithUsername",
"name": "GetEntityChangeWithUsernameAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "entityChangeId",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "List<EntityChangeWithUsername>",
"name": "GetEntityChangesWithUsernameAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "entityId",
"isOptional": false
},
{
"type": "String",
"name": "entityTypeFullName",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
}
],
"contentType": "repositoryInterface",
"name": "IAuditLogRepository",
"summary": null

115
modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo.Abp.AuditLogging.EntityFrameworkCore.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.AuditLogging.EntityFrameworkCore",
"hash": "1a22afdb375b35786b0f9554e4202534",
"hash": "ce7134690167eded17ba2eac28d2d34e",
"contents": [
{
"namespace": "Volo.Abp.AuditLogging.EntityFrameworkCore",
@ -16,6 +16,50 @@
"name": "AbpEntityFrameworkCoreModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAuditLoggingEntityFrameworkCoreModule",
"summary": null
@ -49,6 +93,75 @@
"summary": null
}
],
"replacedDbContexts": [],
"implementingInterfaces": [
{
"name": "IInfrastructure<IServiceProvider>",
"namespace": "Microsoft.EntityFrameworkCore.Infrastructure",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>"
},
{
"name": "IDbContextDependencies",
"namespace": "Microsoft.EntityFrameworkCore.Internal",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies"
},
{
"name": "IDbSetCache",
"namespace": "Microsoft.EntityFrameworkCore.Internal",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Internal.IDbSetCache"
},
{
"name": "IDbContextPoolable",
"namespace": "Microsoft.EntityFrameworkCore.Internal",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable"
},
{
"name": "IResettableService",
"namespace": "Microsoft.EntityFrameworkCore.Infrastructure",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Infrastructure.IResettableService"
},
{
"name": "IDisposable",
"namespace": "System",
"declaringAssemblyName": "System.Private.CoreLib",
"fullName": "System.IDisposable"
},
{
"name": "IAsyncDisposable",
"namespace": "System",
"declaringAssemblyName": "System.Private.CoreLib",
"fullName": "System.IAsyncDisposable"
},
{
"name": "IAbpEfCoreDbContext",
"namespace": "Volo.Abp.EntityFrameworkCore",
"declaringAssemblyName": "Volo.Abp.EntityFrameworkCore",
"fullName": "Volo.Abp.EntityFrameworkCore.IAbpEfCoreDbContext"
},
{
"name": "IEfCoreDbContext",
"namespace": "Volo.Abp.EntityFrameworkCore",
"declaringAssemblyName": "Volo.Abp.EntityFrameworkCore",
"fullName": "Volo.Abp.EntityFrameworkCore.IEfCoreDbContext"
},
{
"name": "ITransientDependency",
"namespace": "Volo.Abp.DependencyInjection",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.DependencyInjection.ITransientDependency"
},
{
"name": "IAuditLoggingDbContext",
"namespace": "Volo.Abp.AuditLogging.EntityFrameworkCore",
"declaringAssemblyName": "Volo.Abp.AuditLogging.EntityFrameworkCore",
"fullName": "Volo.Abp.AuditLogging.EntityFrameworkCore.IAuditLoggingDbContext"
}
],
"contentType": "efCoreDbContext",
"name": "AbpAuditLoggingDbContext",
"summary": null

66
modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo.Abp.AuditLogging.MongoDB.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.AuditLogging.MongoDB",
"hash": "a2df9ee17b75b1206d43e406c35bf292",
"hash": "ce6dfe92b247a77b0138c47e0da4a98c",
"contents": [
{
"namespace": "Volo.Abp.AuditLogging.MongoDB",
@ -16,6 +16,50 @@
"name": "AbpMongoDbModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAuditLoggingMongoDbModule",
"summary": null
@ -31,6 +75,26 @@
"summary": null
}
],
"implementingInterfaces": [
{
"name": "IAbpMongoDbContext",
"namespace": "Volo.Abp.MongoDB",
"declaringAssemblyName": "Volo.Abp.MongoDB",
"fullName": "Volo.Abp.MongoDB.IAbpMongoDbContext"
},
{
"name": "ITransientDependency",
"namespace": "Volo.Abp.DependencyInjection",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.DependencyInjection.ITransientDependency"
},
{
"name": "IAuditLoggingMongoDbContext",
"namespace": "Volo.Abp.AuditLogging.MongoDB",
"declaringAssemblyName": "Volo.Abp.AuditLogging.MongoDB",
"fullName": "Volo.Abp.AuditLogging.MongoDB.IAuditLoggingMongoDbContext"
}
],
"contentType": "mongoDbContext",
"name": "AuditLoggingMongoDbContext",
"summary": null

46
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.BackgroundJobs.DemoApp.HangFire",
"hash": "4564fddc85cb476430afc501b05f04de",
"hash": "a4ac122e27b8e7b2048e2c8803e8f6f0",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs.DemoApp.HangFire",
@ -21,6 +21,50 @@
"name": "AbpBackgroundJobsHangfireModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "DemoAppHangfireModule",
"summary": null

46
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Quartz/Volo.Abp.BackgroundJobs.DemoApp.Quartz.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.BackgroundJobs.DemoApp.Quartz",
"hash": "af02378643f5c264a4f9f8feacc93abc",
"hash": "04c9d2c41471882c5aed1a69db51d7df",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs.DemoApp.Quartz",
@ -21,6 +21,50 @@
"name": "AbpBackgroundJobsQuartzModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "DemoAppQuartzModule",
"summary": null

46
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.RabbitMq/Volo.Abp.BackgroundJobs.DemoApp.RabbitMq.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.BackgroundJobs.DemoApp.RabbitMq",
"hash": "1dbe12bbbddfa1709cbc0b8b4c9b4be4",
"hash": "a02c76cc1acefca2c91f4599c33cfa37",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs.DemoApp.RabbitMq",
@ -21,6 +21,50 @@
"name": "AbpBackgroundJobsRabbitMqModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "DemoAppRabbitMqModule",
"summary": null

46
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Volo.Abp.BackgroundJobs.DemoApp.Shared.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.BackgroundJobs.DemoApp.Shared",
"hash": "5ddbab62dec3c25ff023e99688923fa1",
"hash": "1d43b28badeb799d33e8b128e4be26d3",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs.DemoApp.Shared",
@ -11,6 +11,50 @@
"name": "AbpBackgroundJobsAbstractionsModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "DemoAppSharedModule",
"summary": null

46
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.BackgroundJobs.DemoApp",
"hash": "01a191a9e1801af2ac66e4d5d7a12ec1",
"hash": "9ef6206e41d1a33e5255974ae2b57ad0",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs.DemoApp",
@ -26,6 +26,50 @@
"name": "AbpEntityFrameworkCoreSqlServerModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "DemoAppModule",
"summary": null

46
modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain.Shared/Volo.Abp.BackgroundJobs.Domain.Shared.abppkg.analyze.json

@ -1,10 +1,54 @@
{
"name": "Volo.Abp.BackgroundJobs.Domain.Shared",
"hash": "887c7502e4c34596ef8f71652ecac566",
"hash": "ad745dc8f75ef6e5b391ee5eca14a895",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs",
"dependsOnModules": [],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpBackgroundJobsDomainSharedModule",
"summary": null

177
modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain/Volo.Abp.BackgroundJobs.Domain.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.BackgroundJobs.Domain",
"hash": "ab10046fc446a4f2bf9b142fba2ccef7",
"hash": "9135b4c99ca5f16a980041e8621fb415",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs",
@ -21,6 +21,50 @@
"name": "AbpAutoMapperModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpBackgroundJobsDomainModule",
"summary": null
@ -29,55 +73,106 @@
"baseClass": {
"name": "AggregateRoot<Guid>",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.AggregateRoot<Guid>"
},
"implementingInterfaces": [
{
"name": "IEntity",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IEntity"
},
{
"name": "IEntity<Guid>",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IEntity<Guid>"
},
{
"name": "IAggregateRoot<Guid>",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IAggregateRoot<Guid>"
},
{
"name": "IAggregateRoot",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IAggregateRoot"
},
{
"name": "IGeneratesDomainEvents",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain"
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Entities.IGeneratesDomainEvents"
},
{
"name": "IHasExtraProperties",
"namespace": "Volo.Abp.Data",
"declaringAssemblyName": "Volo.Abp.ObjectExtending"
"declaringAssemblyName": "Volo.Abp.ObjectExtending",
"fullName": "Volo.Abp.Data.IHasExtraProperties"
},
{
"name": "IHasConcurrencyStamp",
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Data"
"declaringAssemblyName": "Volo.Abp.Data",
"fullName": "Volo.Abp.Domain.Entities.IHasConcurrencyStamp"
},
{
"name": "IHasCreationTime",
"namespace": "Volo.Abp.Auditing",
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts"
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts",
"fullName": "Volo.Abp.Auditing.IHasCreationTime"
}
],
"methods": [],
"namespace": "Volo.Abp.BackgroundJobs",
"primaryKeyType": "Guid",
"collectionProperties": {},
"navigationProperties": {},
"namespace": "Volo.Abp.BackgroundJobs",
"primaryKeyType": "Guid",
"properties": [
{
"type": "System.String",
"name": "JobName",
"summary": "Type of the job.\r\n It's AssemblyQualifiedName of job type."
},
{
"type": "System.String",
"name": "JobArgs",
"summary": "Job arguments as serialized string."
},
{
"type": "System.Int16",
"name": "TryCount",
"summary": "Try count of this job.\r\n A job is re-tried if it fails."
},
{
"type": "System.DateTime",
"name": "CreationTime",
"summary": "Creation time of this job."
},
{
"type": "System.DateTime",
"name": "NextTryTime",
"summary": "Next try time of this job."
},
{
"type": "System.Nullable`1[System.DateTime]",
"name": "LastTryTime",
"summary": "Last try time of this job."
},
{
"type": "System.Boolean",
"name": "IsAbandoned",
"summary": "This is true if this job is continuously failed and will not be executed again."
},
{
"type": "Volo.Abp.BackgroundJobs.BackgroundJobPriority",
"name": "Priority",
"summary": "Priority of this job."
}
],
"contentType": "aggregateRoot",
"name": "BackgroundJobRecord",
"summary": null
@ -87,12 +182,66 @@
"entityAnalyzeModel": {
"namespace": "Volo.Abp.BackgroundJobs",
"primaryKeyType": "Guid",
"collectionProperties": {},
"navigationProperties": {},
"properties": [],
"contentType": "entity",
"name": "BackgroundJobRecord",
"summary": null
},
"implementingInterfaces": [
{
"name": "IBasicRepository<BackgroundJobRecord, Guid>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IBasicRepository<BackgroundJobRecord, Guid>"
},
{
"name": "IBasicRepository<BackgroundJobRecord>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IBasicRepository<BackgroundJobRecord>"
},
{
"name": "IReadOnlyBasicRepository<BackgroundJobRecord>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IReadOnlyBasicRepository<BackgroundJobRecord>"
},
{
"name": "IRepository",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IRepository"
},
{
"name": "IReadOnlyBasicRepository<BackgroundJobRecord, Guid>",
"namespace": "Volo.Abp.Domain.Repositories",
"declaringAssemblyName": "Volo.Abp.Ddd.Domain",
"fullName": "Volo.Abp.Domain.Repositories.IReadOnlyBasicRepository<BackgroundJobRecord, Guid>"
}
],
"methods": [
{
"returnType": "List<BackgroundJobRecord>",
"name": "GetWaitingListAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Int32",
"name": "maxResultCount",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
}
],
"contentType": "repositoryInterface",
"name": "IBackgroundJobRepository",
"summary": null

115
modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo.Abp.BackgroundJobs.EntityFrameworkCore.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.BackgroundJobs.EntityFrameworkCore",
"hash": "c1dbbcaf4991b0cfeb513cde24f11892",
"hash": "093b92974b3f005cca5e441d8cc1bafb",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs.EntityFrameworkCore",
@ -16,6 +16,50 @@
"name": "AbpEntityFrameworkCoreModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpBackgroundJobsEntityFrameworkCoreModule",
"summary": null
@ -31,6 +75,75 @@
"summary": null
}
],
"replacedDbContexts": [],
"implementingInterfaces": [
{
"name": "IInfrastructure<IServiceProvider>",
"namespace": "Microsoft.EntityFrameworkCore.Infrastructure",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>"
},
{
"name": "IDbContextDependencies",
"namespace": "Microsoft.EntityFrameworkCore.Internal",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies"
},
{
"name": "IDbSetCache",
"namespace": "Microsoft.EntityFrameworkCore.Internal",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Internal.IDbSetCache"
},
{
"name": "IDbContextPoolable",
"namespace": "Microsoft.EntityFrameworkCore.Internal",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable"
},
{
"name": "IResettableService",
"namespace": "Microsoft.EntityFrameworkCore.Infrastructure",
"declaringAssemblyName": "Microsoft.EntityFrameworkCore",
"fullName": "Microsoft.EntityFrameworkCore.Infrastructure.IResettableService"
},
{
"name": "IDisposable",
"namespace": "System",
"declaringAssemblyName": "System.Private.CoreLib",
"fullName": "System.IDisposable"
},
{
"name": "IAsyncDisposable",
"namespace": "System",
"declaringAssemblyName": "System.Private.CoreLib",
"fullName": "System.IAsyncDisposable"
},
{
"name": "IAbpEfCoreDbContext",
"namespace": "Volo.Abp.EntityFrameworkCore",
"declaringAssemblyName": "Volo.Abp.EntityFrameworkCore",
"fullName": "Volo.Abp.EntityFrameworkCore.IAbpEfCoreDbContext"
},
{
"name": "IEfCoreDbContext",
"namespace": "Volo.Abp.EntityFrameworkCore",
"declaringAssemblyName": "Volo.Abp.EntityFrameworkCore",
"fullName": "Volo.Abp.EntityFrameworkCore.IEfCoreDbContext"
},
{
"name": "ITransientDependency",
"namespace": "Volo.Abp.DependencyInjection",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.DependencyInjection.ITransientDependency"
},
{
"name": "IBackgroundJobsDbContext",
"namespace": "Volo.Abp.BackgroundJobs.EntityFrameworkCore",
"declaringAssemblyName": "Volo.Abp.BackgroundJobs.EntityFrameworkCore",
"fullName": "Volo.Abp.BackgroundJobs.EntityFrameworkCore.IBackgroundJobsDbContext"
}
],
"contentType": "efCoreDbContext",
"name": "BackgroundJobsDbContext",
"summary": null

66
modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp.BackgroundJobs.MongoDB.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.BackgroundJobs.MongoDB",
"hash": "6344680e15792f7726d49525d34e634b",
"hash": "43dcde5f0f68f0b06ce3158a154b58e1",
"contents": [
{
"namespace": "Volo.Abp.BackgroundJobs.MongoDB",
@ -16,6 +16,50 @@
"name": "AbpMongoDbModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpBackgroundJobsMongoDbModule",
"summary": null
@ -31,6 +75,26 @@
"summary": null
}
],
"implementingInterfaces": [
{
"name": "IAbpMongoDbContext",
"namespace": "Volo.Abp.MongoDB",
"declaringAssemblyName": "Volo.Abp.MongoDB",
"fullName": "Volo.Abp.MongoDB.IAbpMongoDbContext"
},
{
"name": "ITransientDependency",
"namespace": "Volo.Abp.DependencyInjection",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.DependencyInjection.ITransientDependency"
},
{
"name": "IBackgroundJobsMongoDbContext",
"namespace": "Volo.Abp.BackgroundJobs.MongoDB",
"declaringAssemblyName": "Volo.Abp.BackgroundJobs.MongoDB",
"fullName": "Volo.Abp.BackgroundJobs.MongoDB.IBackgroundJobsMongoDbContext"
}
],
"contentType": "mongoDbContext",
"name": "BackgroundJobsMongoDbContext",
"summary": null

46
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.AspNetCore.Components.Server.BasicTheme",
"hash": "3ec597ffa0e621e6e5fe39a5cc444f8f",
"hash": "c09e29e1f299ffa9dea6997d0c432162",
"contents": [
{
"namespace": "Volo.Abp.AspNetCore.Components.Server.BasicTheme",
@ -16,6 +16,50 @@
"name": "AbpAspNetCoreComponentsServerThemingModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAspNetCoreComponentsServerBasicThemeModule",
"summary": null

46
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.analyze.json

@ -1,6 +1,6 @@
{
"name": "Volo.Abp.AspNetCore.Components.Web.BasicTheme",
"hash": "f1af6e63bbee31fb0721f1bda5e34924",
"hash": "cda0a7c063dc285d0520dde2062c2c13",
"contents": [
{
"namespace": "Volo.Abp.AspNetCore.Components.Web.BasicTheme",
@ -11,6 +11,50 @@
"name": "AbpAspNetCoreComponentsWebThemingModule"
}
],
"implementingInterfaces": [
{
"name": "IAbpModule",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IAbpModule"
},
{
"name": "IOnPreApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization"
},
{
"name": "IOnApplicationInitialization",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationInitialization"
},
{
"name": "IOnPostApplicationInitialization",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization"
},
{
"name": "IOnApplicationShutdown",
"namespace": "Volo.Abp",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.IOnApplicationShutdown"
},
{
"name": "IPreConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPreConfigureServices"
},
{
"name": "IPostConfigureServices",
"namespace": "Volo.Abp.Modularity",
"declaringAssemblyName": "Volo.Abp.Core",
"fullName": "Volo.Abp.Modularity.IPostConfigureServices"
}
],
"contentType": "abpModule",
"name": "AbpAspNetCoreComponentsWebBasicThemeModule",
"summary": null

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save