In the ABP Suite generated Entity in src/Demo74rc1.Domain/EntityDemos/EntityDemo.cs
There is no need to add an empty constructor. It will generated a Warning or Error (if WarningAsError is activated).
Can you consider removing it from the template?
This also happens in the .Extended version of the Entity generated class. The empty constructor should be removed from the template.
In the AppService generated by ABP Suite, there is an issue in some methods in the AppService if a non-nullable string property is created in an entity.
src/Demo74rc1.Application/EntityDemos/EntityDemosAppService.cs
A solution could be to use the Check.NotNull method
Adding this before the CreateAsync and UpdateAsync method call in the AppService generated class solve this issue.
input.StringColumn = Check.NotNull(input.StringColumn, nameof(input.StringColumn));
In the AppService generated by ABP Suite, there is an issue in some methods in the AppService if a non-nullable string property is created in an entity.
src/Demo74rc1.Application/EntityDemos/EntityDemosAppService.cs
A solution could be to use the Check.NotNull method
Adding this before the CreateAsync method call
input.StringColumn = Check.NotNull(input.StringColumn, nameof(input.StringColumn));
In ABP Suite, there is an update in the entity generator, whenever you select a string, there is a new option to allow empty strings but it's only enabled when the "Required" option is checked.
What is the sense of allowing empty strings if it's required? Why not allow Nullable strings in the ABP Suite entity generator?
ABP Framework version: v7.4.0.rc-1 UI Type: MVC Database System: EF Core (PostgreSQL) Tiered (for MVC) or Auth Server Separated (for Angular): no
In a nullable reference-enabled project, there is a missing "?" in the parameter of MapHealthChecksUiEndpoints
Actual version:
private static IServiceCollection MapHealthChecksUiEndpoints
(this IServiceCollection services,
Action<global::HealthChecks.UI.Configuration.Options> setupOption = null)
{
services.Configure<AbpEndpointRouterOptions>(routerOptions =>
{
routerOptions.EndpointConfigureActions.Add(endpointContext =>
{
endpointContext.Endpoints.MapHealthChecksUI(setupOption);
});
});
return services;
}
It should be:
private static IServiceCollection MapHealthChecksUiEndpoints
(this IServiceCollection services,
Action<global::HealthChecks.UI.Configuration.Options>? setupOption = null)
{
services.Configure<AbpEndpointRouterOptions>(routerOptions =>
{
routerOptions.EndpointConfigureActions.Add(endpointContext =>
{
endpointContext.Endpoints.MapHealthChecksUI(setupOption);
});
});
return services;
}
ABP Framework version: v7.4.0.rc-1 UI Type: MVC Database System: EF Core (PostgreSQL) Tiered (for MVC) or Auth Server Separated (for Angular): no
If <WarningsAsErrors>Nullable</WarningsAsErrors> is enabled, there is an issue with the property name.
It suggested adding the "required" modifier to solve this issue as shown next.
ABP Framework version: v7.4.0.rc-1 UI Type: MVC Database System: EF Core (PostgreSQL) Tiered (for MVC) or Auth Server Separated (for Angular): no
In src/Demo74rc1.Domain/OpenIddict/OpenIddictDataSeedContributor.cs
There is a possible null reference argument in that method (in visual studio and rider) because it's using the ABP wrapper of string.IsNullOrWhiteSpace(str)
If I replace the
if (!webPublicClientId.IsNullOrWhiteSpace())
with this
if (!string.IsNullOrWhiteSpace(webPublicClientId))
ABP Framework version: v7.4.0.rc-1 UI Type: MVC Database System: EF Core (PostgreSQL) Tiered (for MVC) or Auth Server Separated (for Angular): no
There is an issue in test/Demo74rc1.TestBase/Security/FakeCurrentPrincipalAccessor.cs
private ClaimsPrincipal _principal;
_principal is not initialized in the constructor making a warning (or error if <WarningsAsErrors>Nullable</WarningsAsErrors> is setup)
A solution could be to make ClaimsPrincipal nullable private ClaimsPrincipal? _principal;
In the same file, there is an issue with the implementation of the interface
The solution could be to change the interface ICurrentPrincipalAccessor.cs in Volo.Abp.Security.Claims and make the IDisposable as IDisposable?
public interface ICurrentPrincipalAccessor
{
ClaimsPrincipal Principal { get; }
IDisposable? Change(ClaimsPrincipal principal);
}
There are a lot of warnings that can be included in the next RC. There are related to the IConfiguration interface.
For example, in OpenIddictDataSeedContributor.cs
Line 86: var webClientRootUrl = configurationSection["Demo74rc1_Web:RootUrl"].EnsureEndsWith('/');
Line 206: var blazorServerTieredRootUrl = configurationSection["Demo74rc1_BlazorServerTiered:RootUrl"].EnsureEndsWith('/');
Line 250:var webPublicRootUrl = configurationSection["Demo74rc1_Web_Public:RootUrl"].EnsureEndsWith('/');
Line 274: var webPublicTieredRootUrl = configurationSection["Demo74rc1_Web_Public_Tiered:RootUrl"].EnsureEndsWith('/');
To avoid those warnings, you include a null-forgiving operator(!) for the configurationSection variable.