Skip to content

Commit a4315e9

Browse files
committed
Merge branch 'dev' into resource-based-auth
2 parents 1e87390 + 2b2ed07 commit a4315e9

File tree

164 files changed

+1662
-1606
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

164 files changed

+1662
-1606
lines changed

Directory.Packages.props

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,19 @@
1111
<PackageVersion Include="Autofac" Version="8.4.0" />
1212
<PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" />
1313
<PackageVersion Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
14-
<PackageVersion Include="AutoMapper" Version="15.0.1" />
14+
<PackageVersion Include="AutoMapper" Version="14.0.0" />
1515
<PackageVersion Include="Asp.Versioning.Mvc" Version="8.1.0" />
1616
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" />
1717
<PackageVersion Include="AWSSDK.S3" Version="4.0.7.2" />
1818
<PackageVersion Include="AWSSDK.SecurityToken" Version="4.0.2.2" />
1919
<PackageVersion Include="BunnyCDN.Net.Storage" Version="1.0.4" />
20+
<PackageVersion Include="Azure.Identity" Version="1.14.2" />
2021
<PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.20.1" />
2122
<PackageVersion Include="Azure.Storage.Blobs" Version="12.25.0" />
22-
<PackageVersion Include="Blazorise" Version="1.8.5" />
23-
<PackageVersion Include="Blazorise.Components" Version="1.8.5" />
24-
<PackageVersion Include="Blazorise.DataGrid" Version="1.8.5" />
25-
<PackageVersion Include="Blazorise.Snackbar" Version="1.8.5" />
23+
<PackageVersion Include="Blazorise" Version="1.8.6" />
24+
<PackageVersion Include="Blazorise.Components" Version="1.8.6" />
25+
<PackageVersion Include="Blazorise.DataGrid" Version="1.8.6" />
26+
<PackageVersion Include="Blazorise.Snackbar" Version="1.8.6" />
2627
<PackageVersion Include="Castle.Core" Version="5.2.1" />
2728
<PackageVersion Include="Castle.Core.AsyncInterceptor" Version="2.1.0" />
2829
<PackageVersion Include="CommonMark.NET" Version="0.15.1" />
@@ -53,7 +54,7 @@
5354
<PackageVersion Include="JetBrains.Annotations" Version="2025.2.2" />
5455
<PackageVersion Include="LdapForNet" Version="2.7.15" />
5556
<PackageVersion Include="LibGit2Sharp" Version="0.31.0" />
56-
<PackageVersion Include="Magick.NET-Q16-AnyCPU" Version="14.8.2" />
57+
<PackageVersion Include="Magick.NET-Q16-AnyCPU" Version="14.9.1" />
5758
<PackageVersion Include="MailKit" Version="4.13.0" />
5859
<PackageVersion Include="Markdig.Signed" Version="0.42.0" />
5960
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.0" />
@@ -88,7 +89,6 @@
8889
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
8990
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.0" />
9091
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0" />
91-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0" />
9292
<PackageVersion Include="Microsoft.SemanticKernel" Version="1.61.0" />
9393
<PackageVersion Include="Microsoft.SemanticKernel.Abstractions" Version="1.61.0" />
9494
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.9.0" />
@@ -132,11 +132,11 @@
132132
<PackageVersion Include="NUglify" Version="1.21.17" />
133133
<PackageVersion Include="Nullable" Version="1.3.1" />
134134
<PackageVersion Include="Octokit" Version="14.0.0" />
135-
<PackageVersion Include="OpenIddict.Abstractions" Version="7.1.0" />
136-
<PackageVersion Include="OpenIddict.Core" Version="7.1.0" />
137-
<PackageVersion Include="OpenIddict.Server.AspNetCore" Version="7.1.0" />
138-
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="7.1.0" />
139-
<PackageVersion Include="OpenIddict.Validation.ServerIntegration" Version="7.1.0" />
135+
<PackageVersion Include="OpenIddict.Abstractions" Version="7.2.0" />
136+
<PackageVersion Include="OpenIddict.Core" Version="7.2.0" />
137+
<PackageVersion Include="OpenIddict.Server.AspNetCore" Version="7.2.0" />
138+
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="7.2.0" />
139+
<PackageVersion Include="OpenIddict.Validation.ServerIntegration" Version="7.2.0" />
140140
<PackageVersion Include="Oracle.EntityFrameworkCore" Version="9.23.90" />
141141
<PackageVersion Include="Polly" Version="8.6.3" />
142142
<PackageVersion Include="Polly.Extensions.Http" Version="3.0.0" />
@@ -174,6 +174,7 @@
174174
<PackageVersion Include="System.Linq.Dynamic.Core" Version="1.6.7" />
175175
<PackageVersion Include="System.Linq.Queryable" Version="4.3.0" />
176176
<PackageVersion Include="System.Runtime.Loader" Version="4.3.0" />
177+
<PackageVersion Include="System.Security.Cryptography.Xml" Version="10.0.0" />
177178
<PackageVersion Include="System.Security.Permissions" Version="10.0.0" />
178179
<PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0" />
179180
<PackageVersion Include="System.Text.Encoding.CodePages" Version="10.0.0" />
@@ -193,6 +194,6 @@
193194
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
194195
<PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" />
195196
<PackageVersion Include="Fody" Version="6.9.3" />
196-
<PackageVersion Include="System.Management" Version="10.0.0"/>
197+
<PackageVersion Include="System.Management" Version="10.0.0" />
197198
</ItemGroup>
198-
</Project>
199+
</Project>

abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,11 +262,14 @@
262262
"LicenseBanner:CallToAction": "Please <a href=\"/my-organizations/{0}\" class=\"text-decoration-underline\">extend your license.</a>",
263263
"Referral.CreatorUserIdIsRequired": "Creator user ID is required.",
264264
"Referral.TargetEmailIsRequired": "Target email is required.",
265-
"Referral.TargetEmailAlreadyExists": "A referral link for this email address already exists.",
265+
"Referral.YouAlreadyHaveLinkForThisEmail": "You have already created a referral link for this email address.",
266266
"Referral.MaxLinkLimitExceeded": "You have reached the maximum limit of {Limit} active referral links.",
267267
"Referral.LinkNotFound": "Referral link not found.",
268268
"Referral.LinkNotFoundOrNotOwned": "Referral link not found or you don't have permission to access it.",
269269
"Referral.CannotDeleteUsedLink": "You cannot delete a referral link that has already been used.",
270+
"Referral.CannotReferYourself": "You cannot create a referral link for your own email address.",
271+
"Referral:TargetEmail": "Target Email",
272+
"Referral.CannotReferSameOrganizationMember": "You cannot create a referral link for a user who is already a member of your organization.",
270273
"LinkCopiedToClipboard": "Link copied to clipboard",
271274
"AreYouSureToDeleteReferralLink": "Are you sure you want to delete this referral link?",
272275
"DefaultErrorMessage": "An error occurred."

common.props

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@
1818
<ItemGroup>
1919
<None Include="..\..\NuGet.md" Pack="true" PackagePath="\"/>
2020
</ItemGroup>
21-
<Target Name="_PreserveFileProvidersEmbeddedPackageReference" AfterTargets="AddPrunePackageReferences">
22-
<ItemGroup>
23-
<PrunePackageReference Remove="Microsoft.Extensions.FileProviders.Embedded" />
24-
</ItemGroup>
25-
</Target>
2621
<ItemGroup>
2722
<PackageReference Include="Microsoft.SourceLink.GitHub">
2823
<PrivateAssets>all</PrivateAssets>

docs/en/framework/architecture/domain-driven-design/repositories.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,35 @@ ABP uses dynamic proxying to make these attributes work. There are some rules he
254254

255255
> Change tracking behavior doesn't affect tracking entity objects returned from `InsertAsync` and `UpdateAsync` methods. The objects returned from these methods are always tracked (if the underlying provider has the change tracking feature) and any change you make to these objects are saved into the database.
256256
257+
#### Check If Change Tracking Is Enabled
258+
259+
In case of you need to check if change tracking is enabled or disabled on a repository object, you can simply read the `IsChangeTrackingEnabled` property. It is `false` by default for read only repositories (see the *Read Only Repositories* section below). It is `null` by default for other repository objects. If it is `null`, change tracking is enabled unless you've explicitly used the change tracking attributes (see the *Attributes for Change Tracking* section).
260+
261+
### The `EntityName` Property
262+
263+
The `EntityName` property is to set the related entity's name on the repository object in some advanced scenarios. For example, you can use this property to use the [Shared-type entity types](https://learn.microsoft.com/en-us/ef/core/modeling/entity-types?tabs=data-annotations#shared-type-entity-types) feature of Entity Framework Core (it allows you to use a single entity class to work on multiple tables in the database). In other cases, you can just ignore it.
264+
265+
Default value is `null` unless you explicitly set it.
266+
267+
**Example usage:**
268+
269+
````csharp
270+
IRepository<YourSharedType, Guid> _repository; // You can inject it into your class
271+
...
272+
_repository.SetEntityName("Product"); //Set the entity name before using the repository
273+
//use the _repository object as always
274+
````
275+
276+
### The `ProviderName` Property
277+
278+
The `ProviderName` property of a repository object returns the underlying database provider name. It may return one of the following string values for the built-in providers:
279+
280+
* `Volo.Abp.EntityFrameworkCore` (from the constant `AbpEfCoreConsts.ProviderName` value)
281+
* `Volo.Abp.MongoDB` (from the constant `AbpMongoDbConsts.ProviderName` value)
282+
* `Volo.Abp.MemoryDb` (from the constant `AbpMemoryDbConsts.ProviderName` value)
283+
284+
This property is not used in most cases. It is mainly available for internal usage of the ABP framework.
285+
257286
## Other Generic Repository Types
258287

259288
Standard `IRepository<TEntity, TKey>` interface exposes the standard `IQueryable<TEntity>` and you can freely query using the standard LINQ methods. This is fine for most of the applications. However, some ORM providers or database systems may not support standard `IQueryable` interface. If you want to use such providers, you can't rely on the `IQueryable`.

docs/en/framework/infrastructure/event-bus/distributed/azure.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,4 +137,14 @@ Configure<AbpAzureServiceBusOptions>(options =>
137137
});
138138
````
139139

140+
Use `TokenCredential` instead of `ConnectionString` if you want to use custom credential.
141+
142+
````csharp
143+
Configure<AbpAzureServiceBusOptions>(options =>
144+
{
145+
options.Connections.Default.FullyQualifiedNamespace = "sb-my-app.servicebus.windows.net";
146+
options.Connections.Default.TokenCredential = new DefaultAzureCredential();
147+
});
148+
````
149+
140150
Using these options classes can be combined with the `appsettings.json` way. Configuring an option property in the code overrides the value in the configuration file.

docs/en/release-info/migration-guides/abp-10-0.md

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@
77

88
# ABP Version 10.0 Migration Guide
99

10-
This document is a guide for upgrading ABP v9.x solutions to ABP v10.0. There are some changes in this version that may affect your applications, please read it carefully and apply the necessary changes to your application.
10+
This document is a guide for upgrading ABP v9.x solutions to ABP v10.0. There are some changes in this version that may affect your applications. Please read them carefully and apply the necessary changes to your application.
1111

1212
## Open-Source (Framework)
1313

14-
### Upgraded to .NET 10.0
14+
### Upgrade to .NET 10.0
1515

16-
We've upgraded ABP to .NET 10.0, so you need to move your solutions to .NET 10.0 if you want to use ABP 10.0. You can check Microsoft’s [Migrate from ASP.NET Core 9.0 to 10.0](https://learn.microsoft.com/en-us/aspnet/core/migration/90-to-100) documentation, to see how to update an existing ASP.NET Core 9.0 project to ASP.NET Core 10.0.
16+
We've upgraded ABP to .NET 10.0, so you need to move your solutions to .NET 10.0 if you want to use ABP 10.0. You can check Microsoft’s [Migrate from ASP.NET Core 9.0 to 10.0](https://learn.microsoft.com/en-us/aspnet/core/migration/90-to-100) documentation to see how to update an existing ASP.NET Core 9.0 project to ASP.NET Core 10.0.
1717

18-
### Add new EF Core Migrations
18+
### Add New EF Core Migrations
1919

2020
Some entities in certain modules have been modified. If you are using Entity Framework Core, please create a new EF Core migration in your project after upgrading to ABP 10.0.
2121

22-
> If the migration file is empty, you can remove it by `dotnet ef migrations remove` command.
22+
> If the migration file is empty, you can remove it by using the `dotnet ef migrations remove` command.
2323
2424
### Razor Runtime Compilation Obsolete
2525

@@ -53,31 +53,25 @@ For more information, you can check the [Razor Runtime Compilation Obsolete](htt
5353

5454
### IActionContextAccessor Obsolete
5555

56-
We removed the `IActionContextAccessor` from dependency injection.
57-
58-
> We are not using `IActionContextAccessor` in ABP core framework and modules.
56+
We removed the `IActionContextAccessor` from dependency injection and are not using the `IActionContextAccessor` in ABP's core framework and modules.
5957

6058
See [IActionContextAccessor Obsolete](https://learn.microsoft.com/en-us/dotnet/core/compatibility/aspnet-core/10/iactioncontextaccessor-obsolete) for more information.
6159

6260
### Add `BLOB Storing Memory Provider` module.
6361

64-
In this version, we added the `BLOB Storing Memory Provider` module for unit testing purposes.
62+
In this version, we have added the `BLOB Storing Memory Provider` module for unit testing purposes.
6563

6664
See the [BLOB Storing Memory Provider](https://github.com/abpframework/abp/blob/dev/docs/en/framework/infrastructure/blob-storing/memory.md) document for more information.
6765

6866
### Always use `MapStaticAssets`
6967

70-
Provious, the `MapStaticAssets` has performance problems if there are too many static files. and we will use `StaticFileMiddleware` to serve the static files in development mode. NET 10.0 has fixed this problem. We will always use `MapStaticAssets` to serve the static files.
68+
Previously, the `MapStaticAssets` had performance problems if there were too many static files. NET 10.0 has fixed this problem. We will always use `MapStaticAssets` to serve the static files.
7169

7270
See [Static file serving performance issues](https://github.com/dotnet/aspnetcore/issues/59673) for more information.
7371

7472
### C# 14 overload resolution with span parameters
7573

76-
NET Core will redirect `array.Contains` extension method to `MemoryExtensions.Contains`, This will cause `MongoDB.Driver` to be unable to translate `IQueryable<T>`, If you are using `array.Contains` in your code, you should use following code to avoid this problem.
77-
78-
> Only array has this problem, other types are not affected. eg List<T>, HashSet<T>, etc.
79-
80-
> MongoDB.Driver will be fixed in the future.
74+
NET Core will redirect the `array.Contains` extension method to `MemoryExtensions.Contains`. This will cause `MongoDB.Driver` to be unable to translate `IQueryable<T>`. If you are using `array.Contains` in your code, you should use the following code to avoid this problem:
8175

8276
```csharp
8377
M((array, num) => array.Contains(num)); // fails, binds to MemoryExtensions.Contains
@@ -86,13 +80,15 @@ M((array, num) => array.AsEnumerable().Contains(num)); // ok, binds to Enumerabl
8680
M((array, num) => Enumerable.Contains(array, num)); // ok, binds to Enumerable.Contains
8781
```
8882

83+
> Please note that only the `array` type has this problem. Other types are not affected (e.g. `List<T>`, `HashSet<T>`, etc). **MongoDB.Driver** provider will be fixed in future versions, and we will immediately apply the changes if needed.
84+
8985
See the [C# 14 overload resolution with span parameters](https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/10.0/csharp-overload-resolution#recommended-action) for more information.
9086

91-
### OpenIddict 7.X
87+
### OpenIddict Upgrade to 7.X
9288

93-
We upgraded OpenIddict to 7.X. See the [OpenIddict 6.x to 7.x Migration Guide](https://documentation.openiddict.com/guides/migration/60-to-70.html) for more information.
89+
We have upgraded **OpenIddict** to **v7.x**. For detailed information about the changes introduced in this release, refer to the [OpenIddict 6.x to 7.x Migration Guide](https://documentation.openiddict.com/guides/migration/60-to-70.html).
9490

95-
OpenIddict 7.X changed the `OpenIddictToken` entity, you must create a new database migration if you use Entity Framework Core.
91+
As a developer, you typically only need to **create a new Entity Framework Core migration** and **apply it to your database**, since **OpenIddict v7.x** introduces a modification in the `OpenIddictToken` entity.
9692

9793
### Migrating from AutoMapper to Mapperly
9894

@@ -118,6 +114,3 @@ Starting from **ABP 10.0**, the [`HideErrors`](../../framework/fundamentals/cach
118114

119115
By default, ABP hides and logs cache server errors to keep the application running even when the cache is unavailable.
120116
However, in the **development environment**, errors are no longer hidden so that developers can immediately detect and fix **any cache server issues** (such as connection, configuration, or runtime errors).
121-
122-
## PRO
123-

docs/en/studio/installation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ This document explains how to install the ABP Studio tool.
1111

1212
## Pre-requirements
1313

14-
ABP Studio automatically instals most of the required dependencies. When you first launch the application, it will check for and install the following components if missed:
14+
ABP Studio automatically installs most of the required dependencies. When you first launch the application, it will check for and install the following components if missed:
1515

1616
* .NET SDK
1717
* Node.js
1818
* ABP CLI
1919
* mkcert (for HTTPS development)
2020
* WireGuard (for Kubernetes operations)
2121

22-
However, the followings should be manually installed:
22+
However, the following should be manually installed:
2323

2424
### Docker (Required for Kubernetes Operations)
2525

@@ -55,7 +55,7 @@ ABP Studio allows you to customize the user interface theme according to your pr
5555

5656
## Upgrading
5757
ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal.
58-
The modal will prompt you to update to the latest version as below:
58+
The modal will prompt you to update to the latest version as follows:
5959

6060
![new-version-available-window](./images/new-version-available-window.png)
6161

docs/en/testing/integration-tests.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ There are multiple overloads of the `WithUnitOfWorkAsync` method that you can us
350350

351351
## Working with DbContext
352352

353-
In some cases, you may want to directory work with the [Entity Framework's `DbContext` object](https://learn.microsoft.com/en-us/dotnet/api/system.data.entity.dbcontext) to perform database operations in your test methods. In this case, you can use `IDbContextProvider<T>`service to obtain a `DbContext` instance inside a unit of work.
353+
In some cases, you may want to directly work with the [Entity Framework's `DbContext` object](https://learn.microsoft.com/en-us/dotnet/api/system.data.entity.dbcontext) to perform database operations in your test methods. In this case, you can use `IDbContextProvider<T>`service to obtain a `DbContext` instance inside a unit of work.
354354

355355
The following example shows how you can create a `DbContext` object in a test method:
356356

framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using AutoMapper;
33
using AutoMapper.Internal;
44
using Microsoft.Extensions.DependencyInjection;
5-
using Microsoft.Extensions.Logging;
65
using Microsoft.Extensions.Options;
76
using Volo.Abp.Auditing;
87
using Volo.Abp.Modularity;
@@ -41,7 +40,7 @@ public override void ConfigureServices(ServiceConfigurationContext context)
4140
configurator(autoMapperConfigurationContext);
4241
}
4342

44-
var mapperConfiguration = new MapperConfiguration(mapperConfigurationExpression, sp.GetRequiredService<ILoggerFactory>());
43+
var mapperConfiguration = new MapperConfiguration(mapperConfigurationExpression);
4544

4645
foreach (var profileType in options.ValidatingProfiles)
4746
{

framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
</PropertyGroup>
1818

1919
<ItemGroup>
20+
<PackageReference Include="Azure.Identity" />
2021
<PackageReference Include="Azure.Messaging.ServiceBus" />
2122
<ProjectReference Include="..\Volo.Abp.Json\Volo.Abp.Json.csproj" />
2223
<ProjectReference Include="..\Volo.Abp.Threading\Volo.Abp.Threading.csproj" />

0 commit comments

Comments
 (0)