Browse Source

Merge branch 'prerel-9.0' into net9-rc2

pull/21013/head
maliming 2 years ago
parent
commit
8011bd41e9
  1. 2
      docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/Using-DevExtreme-Components-With-The-ABP-Framework.md
  2. 2
      docs/en/Community-Articles/2020-12-10-How-to-Integrate-the-DevExpress-Blazor-Component/POST.md
  3. 2
      docs/en/Community-Articles/2021-01-20-How-to-Integrate-the-MatBlazor-Blazor-Component/POST.md
  4. 2
      docs/en/Community-Articles/2021-04-22-How-to-Integrate-the-Syncfusion-Blazor-Component/POST.md
  5. 2
      docs/en/Community-Articles/2023-03-20- IdentityUser-Relationships/Post.md
  6. 113
      docs/en/cli/index.md
  7. 8
      docs/en/docs-nav.json
  8. 2
      docs/en/framework/api-development/index.md
  9. 2
      docs/en/framework/api-development/standard-apis/index.md
  10. 2
      docs/en/framework/architecture/best-practices/application-layer-overview.md
  11. 2
      docs/en/framework/architecture/best-practices/data-access-overview.md
  12. 2
      docs/en/framework/architecture/best-practices/domain-layer-overview.md
  13. 2
      docs/en/framework/architecture/domain-driven-design/application-layer.md
  14. 2
      docs/en/framework/architecture/domain-driven-design/domain-layer.md
  15. 2
      docs/en/framework/fundamentals/index.md
  16. 2
      docs/en/framework/infrastructure/index.md
  17. BIN
      docs/en/framework/ui/angular/images/angular-advanced-entity-filters-with-custom-content-above-filter.png
  18. BIN
      docs/en/framework/ui/angular/images/angular-advanced-entity-filters-with-form.png
  19. BIN
      docs/en/framework/ui/angular/images/angular-advanced-entity-filters-without-form.png
  20. BIN
      docs/en/framework/ui/angular/images/angular-advanced-entity-filters.png
  21. BIN
      docs/en/framework/ui/angular/images/manage-profile-page-new-tab.png
  22. BIN
      docs/en/framework/ui/angular/images/manage-profile-page.png
  23. 2
      docs/en/framework/ui/index.md
  24. BIN
      docs/en/images/abp-generate-razor-page.png
  25. BIN
      docs/en/images/abp-overall-diagram-1600.png
  26. BIN
      docs/en/images/abp-overall-diagram.png
  27. BIN
      docs/en/images/suite-add-existing-solution-8.3.png
  28. 14
      docs/en/modules/account/impersonation.md
  29. 2
      docs/en/modules/openiddict.md
  30. 2
      docs/en/release-info/index.md
  31. 22
      docs/en/samples/index.md
  32. 8
      docs/en/studio/release-notes.md
  33. 2
      docs/en/studio/version-compatibility.md
  34. 4
      docs/en/suite/add-solution.md
  35. 54
      docs/en/suite/create-solution.md
  36. 2
      docs/en/tools.md
  37. 3
      docs/en/tutorials/book-store/part-09.md
  38. 5
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs
  39. 33
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceManager.cs
  40. 28
      framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenantConnectionStringResolver.cs
  41. 21
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentitySession.cs
  42. 7
      npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html
  43. 3
      npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts
  44. 6
      npm/packs/core/src/abp.js
  45. 1911
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20241002093338_Initial.Designer.cs
  46. 1119
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20241002093338_Initial.cs
  47. 1908
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs
  48. 10
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20241010092009_Initial.Designer.cs
  49. 3
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20241010092009_Initial.cs
  50. 8
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs
  51. 10
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20241010091641_Initial.Designer.cs
  52. 3
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20241010091641_Initial.cs
  53. 8
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs
  54. 10
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20241010091707_Initial.Designer.cs
  55. 3
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20241010091707_Initial.cs
  56. 8
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs
  57. 10
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241010091723_Initial.Designer.cs
  58. 3
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241010091723_Initial.cs
  59. 8
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs
  60. 10
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241010091821_Initial.Designer.cs
  61. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241010091821_Initial.cs
  62. 8
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs
  63. 10
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241010091757_Initial.Designer.cs
  64. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241010091757_Initial.cs
  65. 8
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs
  66. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241010091847_Initial.Designer.cs
  67. 0
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241010091847_Initial.cs
  68. 10
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241010091929_Initial.Designer.cs
  69. 3
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241010091929_Initial.cs
  70. 8
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs

2
docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/Using-DevExtreme-Components-With-The-ABP-Framework.md

@ -1,4 +1,4 @@
## Using DevExtreme Components With the ABP Framework
# Using DevExtreme Components With the ABP Framework
Hi, in this step by step article, I will show you how to integrate [DevExtreme](https://js.devexpress.com/) components into ABP Framework-based applications.

2
docs/en/Community-Articles/2020-12-10-How-to-Integrate-the-DevExpress-Blazor-Component/POST.md

@ -1,4 +1,4 @@
## Using DevExpress Blazor UI Components With the ABP Framework
# Using DevExpress Blazor UI Components With the ABP Framework
Hi, in this step by step article, I will show you how to integrate [DevExpress](https://demos.devexpress.com/blazor/) blazor UI components into ABP Framework-based applications.

2
docs/en/Community-Articles/2021-01-20-How-to-Integrate-the-MatBlazor-Blazor-Component/POST.md

@ -1,4 +1,4 @@
## Using MatBlazor UI Components With the ABP Framework
# Using MatBlazor UI Components With the ABP Framework
Hi, in this step by step article, I will show you how to integrate [MatBlazor](https://www.matblazor.com/), a blazor UI components into ABP Framework-based applications.

2
docs/en/Community-Articles/2021-04-22-How-to-Integrate-the-Syncfusion-Blazor-Component/POST.md

@ -1,4 +1,4 @@
## Integrating SyncFusion UI with ABP Framework Blazor UI
# Integrating SyncFusion UI with ABP Framework Blazor UI
Hi, in this step by step article, I will show you how to integrate [Syncfusion](https://www.syncfusion.com/blazor-components), a blazor UI components into ABP Framework-based applications.

2
docs/en/Community-Articles/2023-03-20- IdentityUser-Relationships/Post.md

@ -1,4 +1,4 @@
## Introduction
# Introduction
In this article, I will talk about the relationships of IdentityUser in every web application that can be created with the ABP framework. When you read this article, you will learn how to extend the user entity in the applications you develop using the ABP framework with a primitive type, extending the user by associating the user with another entity (User-many-to-one-X).

113
docs/en/cli/index.md

@ -70,6 +70,7 @@ Here, is the list of all available commands before explaining their details:
* **`clear-download-cache`**: Clears the templates download cache.
* **`check-extensions`**: Checks the latest version of the ABP CLI extensions.
* **`install-old-cli`**: Installs old ABP CLI.
* **`generate-razor-page`**: Generates a page class that you can use it in the ASP NET Core pipeline to return an HTML page.
### help
@ -964,6 +965,118 @@ Usage:
abp install-old-cli [options]
```
### generate-razor-page
`generate-razor-page` command to generate a page class and then use it in the ASP NET Core pipeline to return an HTML page.
Usage:
1. Create a new `Razor Page(MyPage.cshtml)` that inherits from `AbpCompilationRazorPageBase` in `Views` folder.
2. Create a `MyPageModel` class in the same folder.
3. Create a `MyPage.js` and `MyPage.css` files in the same folder.
4. Add the following code to the `MyPage.cshtml`, `MyPage.css` and `MyPage.js` files.
```cs
public class MyPageModel
{
public string Message { get; set; }
public MyPageModel(string message)
{
Message = message;
}
}
```
```cs
@using System.Globalization
@using Volo.Abp.AspNetCore.RazorViews
@inherits AbpCompilationRazorPageBase
@{
Response.ContentType = "text/html; charset=utf-8";
Response.StatusCode = 200;
}
@functions{
public MyPage(MyPageModel model)
{
Model = model;
}
public MyPageModel Model { get; set; }
}
<html lang="@HtmlEncoder.Encode(CultureInfo.CurrentCulture.Name)">
<head>
<meta charset="utf-8" />
<style>
<%$ include: MyPage.css %>
</style>
<title>@HtmlEncoder.Encode(Model.Message)</title>
</head>
<body>
<h3>@HtmlEncoder.Encode(Model.Message)</h3>
<ul class="list-group">
@for(int i = 0; i < 10; i++)
{
<li class="list-group-item">@i item</li>
}
</ul>
<script>
//<!--
<%$ include: MyPage.js %>
//-->
</script>
</body>
</html>
```
```css
body {
background-color: #65b2ff;
color: #495057;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
```
```js
console.log('MyPage.js loaded!');
```
5. Finally, run the `generate-razor-page` command under the `Views` folder:
```bash
> abp generate-razor-page
Generating code files for pages in /MyProject/Views
Generating code file for page MyPage.cshtml ...
Inlining file MyPage.css
Inlining file MyPage.js
Done!
1 files successfully generated.
```
The output will be like in the above command output, and `MyPage.Designer.cs` file will be created in the same folder. It's a standard C# class that you can use it in the pipeline to return an HTML page:
```cs
app.Use(async (httpContext, next) =>
{
if (true) // Your condition
{
var page = new MyPage(new MyPageModel("Test message"));
await page.ExecuteAsync(httpContext);
}
else
{
await next();
}
});
```
![Razor Page](./../images/abp-generate-razor-page.png)
#### Options
* ```--version``` or ```-v```: Specifies the version for ABP CLI to be installed.

8
docs/en/docs-nav.json

@ -1886,13 +1886,17 @@
"text": "Overview",
"path": "samples"
},
{
"text": "EventHub",
"path": "https://github.com/abpframework/eventhub"
},
{
"text": "eShopOnAbp",
"path": "https://github.com/abpframework/eShopOnAbp"
},
{
"text": "EventHub",
"path": "https://github.com/abpframework/eventhub"
"text": "CMS Kit Demo",
"path": "https://github.com/abpframework/cms-kit-demo"
},
{
"text": "Easy CRM",

2
docs/en/framework/api-development/index.md

@ -1,4 +1,4 @@
## API Development
# API Development
The following documents explain the concepts, infrastructure and integrations to build HTTP APIs with ABP:

2
docs/en/framework/api-development/standard-apis/index.md

@ -1,4 +1,4 @@
## Standard HTTP API Endpoints
# Standard HTTP API Endpoints
ABP provides some pre-built and standard endpoints that contains useful information about the application or service, such as localization entries and settings. Here, is the list of the pre-built endpoints:

2
docs/en/framework/architecture/best-practices/application-layer-overview.md

@ -1,4 +1,4 @@
## Best Practices: Application Layer
# Best Practices: Application Layer
The following documents suggest some best-practices that you can use while implementing the application layer of your solution by following the Domain Driven Design principles:

2
docs/en/framework/architecture/best-practices/data-access-overview.md

@ -1,4 +1,4 @@
## Best Practices: Data Access
# Best Practices: Data Access
The following documents suggest some best-practices that you can use while implementing the database integration layer of your solution by following Domain Driven Design principles:

2
docs/en/framework/architecture/best-practices/domain-layer-overview.md

@ -1,4 +1,4 @@
## Best Practices: Domain Layer
# Best Practices: Domain Layer
The following documents suggest some best-practices that you can use while implementing the domain layer of your solution by following the Domain Driven Design principles:

2
docs/en/framework/architecture/domain-driven-design/application-layer.md

@ -1,4 +1,4 @@
## Domain Driven Design: Application Layer
# Domain Driven Design: Application Layer
Application Layer mediates between the Presentation and Domain Layers. Orchestrates business objects to perform specific application tasks and implements use cases as the application logic. Here, is the list of the building blocks of the Application Layer:

2
docs/en/framework/architecture/domain-driven-design/domain-layer.md

@ -1,4 +1,4 @@
## Domain Driven Design: Domain Layer
# Domain Driven Design: Domain Layer
Domain Layer contains business objects and the core (domain) business rules of the application and it's the heart of the application. Here, is the list of building blocks of the Domain Layer:

2
docs/en/framework/fundamentals/index.md

@ -1,4 +1,4 @@
## ABP Fundamentals: Overview
# ABP Fundamentals: Overview
The following documents explains the fundamental building blocks to create ABP solutions:

2
docs/en/framework/infrastructure/index.md

@ -1,4 +1,4 @@
## ABP Infrastructure
# ABP Infrastructure
ABP provides a complete infrastructure for creating real world software solutions with modern architectures based on the .NET platform. Each of the following documents explains an infrastructure feature:

BIN
docs/en/framework/ui/angular/images/angular-advanced-entity-filters-with-custom-content-above-filter.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 35 KiB

BIN
docs/en/framework/ui/angular/images/angular-advanced-entity-filters-with-form.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 31 KiB

BIN
docs/en/framework/ui/angular/images/angular-advanced-entity-filters-without-form.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
docs/en/framework/ui/angular/images/angular-advanced-entity-filters.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 36 KiB

BIN
docs/en/framework/ui/angular/images/manage-profile-page-new-tab.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 21 KiB

BIN
docs/en/framework/ui/angular/images/manage-profile-page.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 31 KiB

2
docs/en/framework/ui/index.md

@ -1,4 +1,4 @@
## ABP UI Options
# ABP UI Options
ABP provides several options for building the user interface (UI) in your applications. Here are some of the officially supported UI options you can use with ABP:

BIN
docs/en/images/abp-generate-razor-page.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
docs/en/images/abp-overall-diagram-1600.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 547 KiB

After

Width:  |  Height:  |  Size: 407 KiB

BIN
docs/en/images/abp-overall-diagram.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 KiB

After

Width:  |  Height:  |  Size: 286 KiB

BIN
docs/en/images/suite-add-existing-solution-8.3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

14
docs/en/modules/account/impersonation.md

@ -258,6 +258,20 @@ if (!consoleAndAngularClientId.IsNullOrWhiteSpace())
}
```
Add `impersonation: { userImpersonation: true, tenantImpersonation: true}` object to `oAuthConfig` of `environment` if not exits.
```js
export const environment = {
//Other props..
oAuthConfig: {
//Other props..
impersonation: {
userImpersonation: true,
tenantImpersonation: true,
},
},
```
### Blazor WASM
It is currently not supported.

2
docs/en/modules/openiddict.md

@ -1,4 +1,4 @@
## ABP OpenIddict Module
# ABP OpenIddict Module
OpenIddict module provides an integration with the [OpenIddict](https://github.com/openiddict/openiddict-core) which provides advanced authentication features like single sign-on, single log-out, and API access control. This module persists applications, scopes, and other OpenIddict-related objects to the database.

2
docs/en/release-info/index.md

@ -1,4 +1,4 @@
## Release Information
# Release Information
* [Release Notes](./release-notes.md)
* [Migration Guides](./migration-guides/index.md)

22
docs/en/samples/index.md

@ -1,22 +1,34 @@
# Sample Applications
# ABP Samples
Here, a list of official samples built with ABP.
## Event Hub
A reference application built with ABP. It implements the Domain Driven Design with multiple application layers.
* [Live demo](https://www.openeventhub.com/)
* [Source code](https://github.com/abpframework/eventhub)
## eShopOnAbp
Reference microservice solution built with ABP and .NET.
* [Live demo](https://www.eshoponabp.com/)
* [Source code](https://github.com/abpframework/eShopOnAbp)
## Event Hub
## CMS Kit Demo
A reference application built with ABP. It implements the Domain Driven Design with multiple application layers.
A minimal example website built with the [CMS Kit module](../modules/cms-kit/index.md).
* [Source code](https://github.com/abpframework/eventhub)
* [Live demo](https://cms-kit-demo.abp.io/)
* [Source code](https://github.com/abpframework/cms-kit-demo)
## Easy CRM
A middle-size CRM application built with ABP. [Click here](easy-crm.md) to see the details.
A middle-size CRM application built with ABP.
* [Live demo](http://easycrm.abp.io/)
* [Click here](easy-crm.md) to see the details and download the source code.
## Book Store

8
docs/en/studio/release-notes.md

@ -2,6 +2,14 @@
This document contains **brief release notes** for each ABP Studio release. Release notes only include **major features** and **visible enhancements**. Therefore, they don't include all the development done in the related version.
## 0.9.1 (2024-10-10)
* Fixed the ABP Studio CLI's Bundle Command
* Fixed the Public Web project for the Microservice Template
* Removed the React Native for the Community Edition (open-source)
* Added multiple gateway and UI selection option during microservice creation
* Added External Logins item to user menu for the Blazor templates
## 0.8.4 (2024-10-07)
* Fixed the ABP Suite does not open problem for macOS

2
docs/en/studio/version-compatibility.md

@ -4,7 +4,7 @@ This document provides an overview of the compatibility between various versions
| **ABP Studio Version** | **ABP Version** |
|------------------------|---------------------------|
| 0.8.4 | 8.3.1 |
| 0.8.4 - 0.9.1 | 8.3.1 |
| 0.8.1 to 0.8.3 | 8.3.0 |
| 0.8.0 | 8.2.3 |
| 0.7.8 - 0.7.9 | 8.2.2 |

4
docs/en/suite/add-solution.md

@ -14,10 +14,10 @@
}
````
ABP Suite requires an ABP solution to work on, that's why when you start it, you will see two actions: `Add an existing solution` and `Create a new solution`
ABP Suite requires an ABP solution to work on, that's why when you start it, you need an ABP Solution and it should be added in ABP Suite UI.
## Add an existing solution
Add your existing solution which was created from the [ABP Studio](../studio/index.md) or [ABP CLI](../cli/index.md). You have to enter your `YourProject.sln` file path. Also, it works if you enter the directory of the `YourProject.sln` when there's single solution inside.
![Add an existing solution](../images/suite-add-existing-solution-8.1.png)
![Add an existing solution](../images/suite-add-existing-solution-8.3.png)

54
docs/en/suite/create-solution.md

@ -16,56 +16,6 @@
## Create a new solution
Creates a new ABP solution. It's an alternative way of creating an ABP project rather than [ABP CLI](../cli/index.md#new). To create a new ABP Solution, click the **Create a new solution** button. It will open a new dialog for the options.
From ABP Suite v8.3, **create a new solution** option has been removed. Instead, it's suggessted to use [ABP Studio](../studio/index.md) or [ABP CLI](../cli/index.md) to create a new solution. After, creating an ABP Solution, then you can generate CRUD pages via ABP Suite as always.
![Create a new ABP Solution](../images/suite-create-a-new-solution.png)
You need to provide your *template type*, *project name*, *output folder* where the project will be created in, *UI Framework* as your front-end, *mobile* option (**React Native** or **none**), *database provider*, *database management system* (if the database provider is **Entity Framework Core**) and *connection string*.
Also, you can add a *public web site* project to your solution, separate tenant schema by choosing the `Separated tenant schema` option and create the solution as tiered with the *Tiered* option which separates `Web` and `HTTP API` projects.
![Create a new solution](../images/suite-new-solution.png)
- **Template type:** This is the startup template type of your solution. You can check the all available templates from [here](../solution-templates).
- **Project name:** This is the solution name and also the prefix for the namespace of your solution. In this example `Acme.BookStore` is the project name. The solution file will be named as `Acme.BookStore.sln`. And the namespaces of `c#` files will start with `Acme.BookStore.*`
- **Output folder:** This is the directory where the new project will be created. Suite automatically creates the output directory if not exists and places the project folder inside the output directory. See the below folder view for `Acme.BookStore` project.
![New Solution Directory](../images/suite-new-solution-directory.png)
- **Theme:** You can generate your project with one of the 3 themes: `LeptonX`, `Lepton`, and `Basic theme`.
- `LeptonX` is a new modern and stylish Bootstrap UI theme with different color options. It's is the newest theme and is the default.
- `Lepton` is a modern, mature, responsive UI theme with different style and color options.
- `Basic theme` is a minimalist UI theme with plain Bootstrap colors and styles. Ideal if you will build your own UI theme.
> If you choose **LeptonX**, another option named **Theme style** will show up, you can choose one out of 4 options: `System`, `Dim`, `Dark` or `Light`.
![suite-new-solution-leptonx-theme](../images/suite-new-solution-leptonx-theme.png)
- **UI framework:** There are 4 types of UI Frameworks: `MVC`, `Angular`, `Blazor WebAssembly`, `Blazor Server`. Suite works with all of these frameworks.
- If you choose `Angular` or `Blazor WebAssembly`, two checkbox options will appear at the bottom:
- `Separate Auth Server`: Separates the Auth Server application from the API host application. If not checked, the server-side will have a single endpoint.
- `Progressive web application`: Optional Progressive Web Application checkbox.
- **Mobile:** You can create the template with React Native and MAUI as a mobile framework or without any mobile application support.
- **Database Provider:** ABP supports 2 database providers: `Entity Framework Core` and `MongoDB`. `Entity Framework Core` supports a variety of database management systems like `MS SQL Server`, `Oracle`, `MySQL` or `PostgreSQL`. See the full list https://docs.microsoft.com/ef/core/providers/?tabs=dotnet-core-cli. On the other hand [MongoDB](https://www.mongodb.com/) is a document-oriented NoSQL database used for high volume data storage. If you have a requirement to work with relational database systems, choose `Entity Framework Core` otherwise choose `MongoDB`.
- **Database management system:** You can choose your **Database Management System (DBMS)** while creating a new solution. There are 6 types of database management system: `SqlServer` (default), `MySQL`, `SQLite`, `Oracle`, `Oracle-Devart` and `PostgreSQL`.
- **Connection string:** You can define the connection string for connecting to the database by filling this area.
- **Public web site:** Creates the solution with an additional public web site project.
- **Separated tenant schema:** Creates the solution with the separated tenant schema support. Also, it creates a separate DbContext & migration path for tenants to not include host-related tables in tenant databases.
- **Tiered:** Creates a tiered solution where `Web` and `HTTP API ` layers are physically separated. If not specified, it creates a layered solution which is less complex and suitable for most scenarios. You can leave it unchecked, if you are not sure.
- **Preview:** Creates the solution in the latest preview version.
> ABP Studio has a shortcut for running [ABP Suite](./index.md) to allow using it without starting it externally and using it on a browser, which means you can create, manage, deploy your applications in a single desktop application and also generate CRUD pages via Suite as a pre-integrated application to ABP Studio.

2
docs/en/tools.md

@ -1,4 +1,4 @@
## Tools
# Tools
ABP provides a comprehensive set of tools designed to enhance the development experience and improve productivity:

3
docs/en/tutorials/book-store/part-09.md

@ -558,6 +558,7 @@ Open the `/src/app/route.provider.ts` and add `'BookStore.Books || BookStore.Aut
layout: eLayoutType.application,
requiredPolicy: 'BookStore.Books || BookStore.Authors',
},
````
The final `configureRoutes` function declaration should be following:
@ -1240,4 +1241,4 @@ That's all! This is a fully working CRUD page, you can create, edit and delete t
> **Tip**: If you run the `.DbMigrator` console application after defining a new permission, it automatically grants these new permissions to the admin role and you don't need to manually grant the permissions yourself.
{{end}}
{{end}}

5
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs

@ -193,7 +193,7 @@ public class PackagePreviewSwitcher : ITransientDependency
var folder = Path.GetDirectoryName(project);
_packageSourceManager.Add(FindSolutionFolder(project) ?? folder, "ABP Nightly",
"https://www.myget.org/F/abp-nightly/api/v3/index.json");
"https://www.myget.org/F/abp-nightly/api/v3/index.json", "Volo.*");
await _nugetPackagesVersionUpdater.UpdateSolutionAsync(
project,
@ -213,7 +213,8 @@ public class PackagePreviewSwitcher : ITransientDependency
var solutionAngularFolder = GetSolutionAngularFolder(solutionFolder);
_packageSourceManager.Add(solutionFolder, "ABP Nightly",
"https://www.myget.org/F/abp-nightly/api/v3/index.json");
"https://www.myget.org/F/abp-nightly/api/v3/index.json",
"Volo.*");
if (solutionPath != null)
{

33
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceManager.cs

@ -1,5 +1,6 @@
using System;
using System.IO;
using System.Linq;
using System.Xml;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
@ -16,7 +17,7 @@ public class PackageSourceManager : ITransientDependency
Logger = NullLogger<PackageSourceManager>.Instance;
}
public void Add(string solutionFolder, string sourceKey, string sourceValue)
public void Add(string solutionFolder, string sourceKey, string sourceValue, params string[] packageMappingPatterns)
{
var nugetConfigPath = GetNugetConfigPath(solutionFolder);
@ -61,6 +62,11 @@ public class PackageSourceManager : ITransientDependency
sourceNodes?[0]?.AppendChild(newNode);
if (packageMappingPatterns.Any())
{
ConfigurePackageSourceMappings(doc, sourceKey, packageMappingPatterns);
}
File.WriteAllText(nugetConfigPath, doc.OuterXml);
}
catch
@ -69,6 +75,31 @@ public class PackageSourceManager : ITransientDependency
}
}
protected virtual void ConfigurePackageSourceMappings(XmlDocument doc, string sourceKey, string[] packageMappingPatterns)
{
var packageMappingNodes = doc.SelectNodes("/configuration/packageSourceMapping");
if (packageMappingNodes == null)
{
// If there is no packageSourceMapping node, leave it as it is.
Logger.LogWarning($"<packageSourceMapping> node not found in 'NuGet.Config' file. Skipping adding patterns for '{sourceKey}' source.");
return;
}
var packageSourceNode = doc.CreateElement("packageSource");
var sourceAttr = doc.CreateAttribute("key");
sourceAttr.Value = sourceKey;
packageSourceNode.Attributes.Append(sourceAttr);
packageMappingNodes[0]?.AppendChild(packageSourceNode);
foreach (var pattern in packageMappingPatterns)
{
var packageNode = doc.CreateElement("package");
var patternAttr = doc.CreateAttribute("pattern");
patternAttr.Value = pattern;
packageNode.Attributes.Append(patternAttr);
packageSourceNode.AppendChild(packageNode);
}
}
public void Remove(string solutionFolder, string sourceKey)
{
var nugetConfigPath = GetNugetConfigPath(solutionFolder);

28
framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenantConnectionStringResolver.cs

@ -118,27 +118,25 @@ public class MultiTenantConnectionStringResolver : DefaultConnectionStringResolv
return connString!;
}
//Fallback to tenant's default connection string if available
if (!tenantDefaultConnectionString.IsNullOrWhiteSpace())
{
return tenantDefaultConnectionString!;
}
//Try to find the specific connection string for given name
var connStringInOptions = Options.ConnectionStrings.GetOrDefault(connectionStringName);
if (!connStringInOptions.IsNullOrWhiteSpace())
//Fallback to the mapped database for the specific connection string
var database = Options.Databases.GetMappedDatabaseOrNull(connectionStringName);
if (database != null && database.IsUsedByTenants)
{
return connStringInOptions!;
connString = tenant.ConnectionStrings?.GetOrDefault(database.DatabaseName);
if (!connString.IsNullOrWhiteSpace())
{
//Found for the tenant
return connString!;
}
}
//Fallback to the global default connection string
var defaultConnectionString = Options.ConnectionStrings.Default;
if (!defaultConnectionString.IsNullOrWhiteSpace())
//Fallback to tenant's default connection string if available
if (!tenantDefaultConnectionString.IsNullOrWhiteSpace())
{
return defaultConnectionString!;
return tenantDefaultConnectionString!;
}
throw new AbpException("No connection string defined!");
return base.Resolve(connectionStringName);
}
protected virtual async Task<TenantConfiguration?> FindTenantConfigurationAsync(Guid tenantId)

21
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentitySession.cs

@ -1,11 +1,14 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using Volo.Abp.Domain.Entities;
using Volo.Abp.MultiTenancy;
using Volo.Abp.ObjectExtending;
namespace Volo.Abp.Identity;
public class IdentitySession : AggregateRoot<Guid>, IMultiTenant
public class IdentitySession : BasicAggregateRoot<Guid>, IHasExtraProperties, IMultiTenant
{
public virtual string SessionId { get; protected set; }
@ -28,9 +31,12 @@ public class IdentitySession : AggregateRoot<Guid>, IMultiTenant
public virtual DateTime? LastAccessed { get; protected set; }
public virtual ExtraPropertyDictionary ExtraProperties { get; protected set; }
protected IdentitySession()
{
ExtraProperties = new ExtraPropertyDictionary();
this.SetDefaultsForExtraProperties();
}
public IdentitySession(
@ -55,6 +61,17 @@ public class IdentitySession : AggregateRoot<Guid>, IMultiTenant
IpAddresses = ipAddresses;
SignedIn = signedIn;
LastAccessed = lastAccessed;
ExtraProperties = new ExtraPropertyDictionary();
this.SetDefaultsForExtraProperties();
}
public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
return ExtensibleObjectValidator.GetValidationErrors(
this,
validationContext
);
}
public void SetSignedInTime(DateTime signedIn)

7
npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html

@ -1,7 +1,12 @@
@if (visible) {
<abp-modal [(visible)]="visible" [busy]="modalBusy" [options]="{ size: 'lg' }">
<ng-template #abpHeader>
<h3>{{ 'AbpFeatureManagement::Features' | abpLocalization }}</h3>
<h3>
{{ 'AbpFeatureManagement::Features' | abpLocalization }}
@if (providerTitle) {
- {{ providerTitle }}
}
</h3>
</ng-template>
<ng-template #abpBody>

3
npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts

@ -57,6 +57,9 @@ export class FeatureManagementComponent
@Input()
providerName: string;
@Input({ required: false })
providerTitle: string;
selectedGroupDisplayName: string;
groups: Pick<FeatureGroupDto, 'name' | 'displayName'>[] = [];

6
npm/packs/core/src/abp.js

@ -480,7 +480,11 @@ var abp = abp || {};
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < callbacks.length; i++) {
callbacks[i].apply(this, args);
try {
callbacks[i].apply(this, args);
} catch(e) {
console.error(e);
}
}
};

1911
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20241002093338_Initial.Designer.cs

File diff suppressed because it is too large

1119
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20241002093338_Initial.cs

File diff suppressed because it is too large

1908
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs

File diff suppressed because it is too large

10
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20241002093531_Initial.Designer.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20241010092009_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(MyProjectNameDbContext))]
[Migration("20241002093531_Initial")]
[Migration("20241010092009_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -657,13 +657,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -674,7 +667,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241002093429_Initial.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20241010092009_Initial.cs

@ -269,8 +269,7 @@ namespace MyCompanyName.MyProjectName.Migrations
IpAddresses = table.Column<string>(type: "nvarchar(2048)", maxLength: 2048, nullable: true),
SignedIn = table.Column<DateTime>(type: "datetime2", nullable: false),
LastAccessed = table.Column<DateTime>(type: "datetime2", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{

8
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -654,13 +654,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -671,7 +664,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

10
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20241002093248_Initial.Designer.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20241010091641_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Host.Migrations
{
[DbContext(typeof(MyProjectNameDbContext))]
[Migration("20241002093248_Initial")]
[Migration("20241010091641_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -657,13 +657,6 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -674,7 +667,6 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

3
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20241002093248_Initial.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20241010091641_Initial.cs

@ -269,8 +269,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
IpAddresses = table.Column<string>(type: "nvarchar(2048)", maxLength: 2048, nullable: true),
SignedIn = table.Column<DateTime>(type: "datetime2", nullable: false),
LastAccessed = table.Column<DateTime>(type: "datetime2", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{

8
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -654,13 +654,6 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -671,7 +664,6 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

10
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20241002093310_Initial.Designer.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20241010091707_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Mvc.Migrations
{
[DbContext(typeof(MyProjectNameDbContext))]
[Migration("20241002093310_Initial")]
[Migration("20241010091707_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -657,13 +657,6 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -674,7 +667,6 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

3
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20241002093310_Initial.cs → templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20241010091707_Initial.cs

@ -269,8 +269,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
IpAddresses = table.Column<string>(type: "nvarchar(2048)", maxLength: 2048, nullable: true),
SignedIn = table.Column<DateTime>(type: "datetime2", nullable: false),
LastAccessed = table.Column<DateTime>(type: "datetime2", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{

8
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -654,13 +654,6 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -671,7 +664,6 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

10
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241002093350_Initial.Designer.cs → templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241010091723_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(MyProjectNameDbContext))]
[Migration("20241002093350_Initial")]
[Migration("20241010091723_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -712,13 +712,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -729,7 +722,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

3
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241002093350_Initial.cs → templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241010091723_Initial.cs

@ -290,8 +290,7 @@ namespace MyCompanyName.MyProjectName.Migrations
IpAddresses = table.Column<string>(type: "nvarchar(2048)", maxLength: 2048, nullable: true),
SignedIn = table.Column<DateTime>(type: "datetime2", nullable: false),
LastAccessed = table.Column<DateTime>(type: "datetime2", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{

8
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -709,13 +709,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -726,7 +719,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

10
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241002093429_Initial.Designer.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241010091821_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(AuthServerDbContext))]
[Migration("20241002093429_Initial")]
[Migration("20241010091821_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -657,13 +657,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -674,7 +667,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

3
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20241002093531_Initial.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241010091821_Initial.cs

@ -269,8 +269,7 @@ namespace MyCompanyName.MyProjectName.Migrations
IpAddresses = table.Column<string>(type: "nvarchar(2048)", maxLength: 2048, nullable: true),
SignedIn = table.Column<DateTime>(type: "datetime2", nullable: false),
LastAccessed = table.Column<DateTime>(type: "datetime2", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{

8
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs

@ -654,13 +654,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -671,7 +664,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

10
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241002093412_Initial.Designer.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241010091757_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
{
[DbContext(typeof(UnifiedDbContext))]
[Migration("20241002093412_Initial")]
[Migration("20241010091757_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -657,13 +657,6 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -674,7 +667,6 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241002093412_Initial.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241010091757_Initial.cs

@ -269,8 +269,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
IpAddresses = table.Column<string>(type: "nvarchar(2048)", maxLength: 2048, nullable: true),
SignedIn = table.Column<DateTime>(type: "datetime2", nullable: false),
LastAccessed = table.Column<DateTime>(type: "datetime2", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{

8
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs

@ -654,13 +654,6 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -671,7 +664,6 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241002093440_Initial.Designer.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241010091847_Initial.Designer.cs

@ -12,7 +12,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(MyProjectNameHttpApiHostMigrationsDbContext))]
[Migration("20241002093440_Initial")]
[Migration("20241010091847_Initial")]
partial class Initial
{
/// <inheritdoc />

0
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241002093440_Initial.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241010091847_Initial.cs

10
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241002093456_Initial.Designer.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241010091929_Initial.Designer.cs

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(UnifiedDbContext))]
[Migration("20241002093456_Initial")]
[Migration("20241010091929_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -657,13 +657,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -674,7 +667,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

3
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241002093456_Initial.cs → templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241010091929_Initial.cs

@ -269,8 +269,7 @@ namespace MyCompanyName.MyProjectName.Migrations
IpAddresses = table.Column<string>(type: "nvarchar(2048)", maxLength: 2048, nullable: true),
SignedIn = table.Column<DateTime>(type: "datetime2", nullable: false),
LastAccessed = table.Column<DateTime>(type: "datetime2", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{

8
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs

@ -654,13 +654,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(40)
.HasColumnType("nvarchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Device")
.IsRequired()
.HasMaxLength(64)
@ -671,7 +664,6 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("nvarchar(64)");
b.Property<string>("ExtraProperties")
.IsRequired()
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");

Loading…
Cancel
Save