Browse Source

Merge pull request #17549 from abpframework/liangshiwei/group12

Group12 Enable nullable annotations
pull/17557/head
maliming 3 years ago
committed by GitHub
parent
commit
05b815c1a5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/ISupportsExplicitLoading.cs
  2. 2
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryExtensions.cs
  3. 2
      framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo.Abp.EntityFrameworkCore.MySQL.csproj
  4. 2
      framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextMySQLExtensions.cs
  5. 4
      framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsMySQLExtensions.cs
  6. 2
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj
  7. 2
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextOracleDevartExtensions.cs
  8. 4
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsOracleDevartExtensions.cs
  9. 2
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo.Abp.EntityFrameworkCore.Oracle.csproj
  10. 2
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextOracleExtensions.cs
  11. 4
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsOracleExtensions.cs
  12. 2
      framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj
  13. 4
      framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextPostgreSqlExtensions.cs
  14. 8
      framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsPostgreSqlExtensions.cs
  15. 2
      framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/ConnectionStrings/NpgsqlConnectionStringChecker.cs
  16. 2
      framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj
  17. 2
      framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqlServerExtensions.cs
  18. 4
      framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqlServerExtensions.cs
  19. 2
      framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj
  20. 4
      framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs
  21. 4
      framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs
  22. 2
      framework/src/Volo.Abp.EntityFrameworkCore/Microsoft/Extensions/DependencyInjection/AbpEfCoreServiceCollectionExtensions.cs
  23. 2
      framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj
  24. 20
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
  25. 28
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
  26. 2
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContextOptions.cs
  27. 12
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DependencyInjection/AbpDbContextConfigurationContext.cs
  28. 8
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DependencyInjection/AbpEntityOptions.cs
  29. 4
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DependencyInjection/DbContextCreationContext.cs
  30. 2
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DependencyInjection/DbContextOptionsFactory.cs
  31. 6
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DistributedEvents/IncomingEventRecord.cs
  32. 4
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DistributedEvents/OutgoingEventRecord.cs
  33. 12
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs
  34. 13
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs
  35. 12
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/IEfCoreDbContext.cs
  36. 4
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/Migrations/EfCoreDatabaseMigrationEventHandlerBase.cs
  37. 8
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/Modeling/AbpModelBuilderConfigurationOptions.cs
  38. 2
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/QueryFilterExpressionHelper.cs
  39. 2
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueComparers/ExtraPropertyDictionaryValueComparer.cs
  40. 4
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueConverters/AbpDateTimeValueConverter.cs
  41. 2
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueConverters/AbpJsonValueConverter.cs
  42. 12
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueConverters/ExtraPropertiesValueConverter.cs
  43. 5
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/EfCoreObjectExtensionPropertyInfoExtensions.cs
  44. 6
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/ObjectExtensionInfoEfCoreMappingOptions.cs
  45. 12
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/ObjectExtensionPropertyInfoEfCoreMappingOptions.cs
  46. 2
      framework/src/Volo.Abp.MemoryDb/Microsoft/Extensions/DependencyInjection/AbpMemoryDbServiceCollectionExtensions.cs
  47. 2
      framework/src/Volo.Abp.MemoryDb/Volo.Abp.MemoryDb.csproj
  48. 4
      framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDatabase.cs
  49. 8
      framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs
  50. 2
      framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/Utf8JsonMemoryDbSerializer.cs
  51. 2
      framework/src/Volo.Abp.MemoryDb/Volo/Abp/MemoryDb/DependencyInjection/MemoryDbRepositoryRegistrar.cs
  52. 2
      framework/src/Volo.Abp.MongoDB/Microsoft/Extensions/DependencyInjection/AbpMongoDbServiceCollectionExtensions.cs
  53. 2
      framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj
  54. 6
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbBulkOperationProvider.cs
  55. 4
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbRepository.cs
  56. 2
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbRepositoryFilterer.cs
  57. 32
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs
  58. 2
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepositoryFilterer.cs
  59. 4
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDbCoreRepositoryExtensions.cs
  60. 12
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs
  61. 2
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContextOptions.cs
  62. 3
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoModelBuilderConfigurationOptions.cs
  63. 6
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DistributedEvents/IncomingEventRecord.cs
  64. 4
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DistributedEvents/OutgoingEventRecord.cs
  65. 2
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs
  66. 4
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IMongoModelBuilder.cs
  67. 2
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoCollectionAttribute.cs
  68. 24
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs
  69. 2
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoEntityModelBuilder.cs
  70. 6
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs
  71. 2
      framework/src/Volo.Abp.Uow/Volo/Abp/Uow/ChildUnitOfWork.cs
  72. 2
      framework/src/Volo.Abp.Uow/Volo/Abp/Uow/IUnitOfWork.cs
  73. 2
      framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs

2
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/ISupportsExplicitLoading.cs

@ -18,7 +18,7 @@ public interface ISupportsExplicitLoading<TEntity>
Task EnsurePropertyLoadedAsync<TProperty>( Task EnsurePropertyLoadedAsync<TProperty>(
TEntity entity, TEntity entity,
Expression<Func<TEntity, TProperty>> propertyExpression, Expression<Func<TEntity, TProperty?>> propertyExpression,
CancellationToken cancellationToken) CancellationToken cancellationToken)
where TProperty : class; where TProperty : class;
} }

2
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryExtensions.cs

@ -34,7 +34,7 @@ public static class RepositoryExtensions
public async static Task EnsurePropertyLoadedAsync<TEntity, TKey, TProperty>( public async static Task EnsurePropertyLoadedAsync<TEntity, TKey, TProperty>(
this IBasicRepository<TEntity, TKey> repository, this IBasicRepository<TEntity, TKey> repository,
TEntity entity, TEntity entity,
Expression<Func<TEntity, TProperty>> propertyExpression, Expression<Func<TEntity, TProperty?>> propertyExpression,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
) )
where TEntity : class, IEntity<TKey> where TEntity : class, IEntity<TKey>

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

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.EntityFrameworkCore.MySQL</AssemblyName> <AssemblyName>Volo.Abp.EntityFrameworkCore.MySQL</AssemblyName>
<PackageId>Volo.Abp.EntityFrameworkCore.MySQL</PackageId> <PackageId>Volo.Abp.EntityFrameworkCore.MySQL</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

2
framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextMySQLExtensions.cs

@ -10,7 +10,7 @@ public static class AbpDbContextConfigurationContextMySQLExtensions
{ {
public static DbContextOptionsBuilder UseMySQL( public static DbContextOptionsBuilder UseMySQL(
[NotNull] this AbpDbContextConfigurationContext context, [NotNull] this AbpDbContextConfigurationContext context,
[CanBeNull] Action<MySqlDbContextOptionsBuilder> mySQLOptionsAction = null) Action<MySqlDbContextOptionsBuilder>? mySQLOptionsAction = null)
{ {
if (context.ExistingConnection != null) if (context.ExistingConnection != null)
{ {

4
framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsMySQLExtensions.cs

@ -8,7 +8,7 @@ public static class AbpDbContextOptionsMySQLExtensions
{ {
public static void UseMySQL( public static void UseMySQL(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<MySqlDbContextOptionsBuilder> mySQLOptionsAction = null) Action<MySqlDbContextOptionsBuilder>? mySQLOptionsAction = null)
{ {
options.Configure(context => options.Configure(context =>
{ {
@ -18,7 +18,7 @@ public static class AbpDbContextOptionsMySQLExtensions
public static void UseMySQL<TDbContext>( public static void UseMySQL<TDbContext>(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<MySqlDbContextOptionsBuilder> mySQLOptionsAction = null) Action<MySqlDbContextOptionsBuilder>? mySQLOptionsAction = null)
where TDbContext : AbpDbContext<TDbContext> where TDbContext : AbpDbContext<TDbContext>
{ {
options.Configure<TDbContext>(context => options.Configure<TDbContext>(context =>

2
framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.EntityFrameworkCore.Oracle.Devart</AssemblyName> <AssemblyName>Volo.Abp.EntityFrameworkCore.Oracle.Devart</AssemblyName>
<PackageId>Volo.Abp.EntityFrameworkCore.Oracle.Devart</PackageId> <PackageId>Volo.Abp.EntityFrameworkCore.Oracle.Devart</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

2
framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextOracleDevartExtensions.cs

@ -10,7 +10,7 @@ public static class AbpDbContextConfigurationContextOracleDevartExtensions
{ {
public static DbContextOptionsBuilder UseOracle( public static DbContextOptionsBuilder UseOracle(
[NotNull] this AbpDbContextConfigurationContext context, [NotNull] this AbpDbContextConfigurationContext context,
[CanBeNull] Action<OracleDbContextOptionsBuilder> oracleOptionsAction = null, Action<OracleDbContextOptionsBuilder>? oracleOptionsAction = null,
bool useExistingConnectionIfAvailable = false) bool useExistingConnectionIfAvailable = false)
{ {
if (useExistingConnectionIfAvailable && context.ExistingConnection != null) if (useExistingConnectionIfAvailable && context.ExistingConnection != null)

4
framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsOracleDevartExtensions.cs

@ -8,7 +8,7 @@ public static class AbpDbContextOptionsOracleDevartExtensions
{ {
public static void UseOracle( public static void UseOracle(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<OracleDbContextOptionsBuilder> oracleOptionsAction = null, Action<OracleDbContextOptionsBuilder>? oracleOptionsAction = null,
bool useExistingConnectionIfAvailable = false) bool useExistingConnectionIfAvailable = false)
{ {
options.Configure(context => options.Configure(context =>
@ -19,7 +19,7 @@ public static class AbpDbContextOptionsOracleDevartExtensions
public static void UseOracle<TDbContext>( public static void UseOracle<TDbContext>(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<OracleDbContextOptionsBuilder> oracleOptionsAction = null, Action<OracleDbContextOptionsBuilder>? oracleOptionsAction = null,
bool useExistingConnectionIfAvailable = false) bool useExistingConnectionIfAvailable = false)
where TDbContext : AbpDbContext<TDbContext> where TDbContext : AbpDbContext<TDbContext>
{ {

2
framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo.Abp.EntityFrameworkCore.Oracle.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.EntityFrameworkCore.Oracle</AssemblyName> <AssemblyName>Volo.Abp.EntityFrameworkCore.Oracle</AssemblyName>
<PackageId>Volo.Abp.EntityFrameworkCore.Oracle</PackageId> <PackageId>Volo.Abp.EntityFrameworkCore.Oracle</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

2
framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextOracleExtensions.cs

@ -10,7 +10,7 @@ public static class AbpDbContextConfigurationContextOracleExtensions
{ {
public static DbContextOptionsBuilder UseOracle( public static DbContextOptionsBuilder UseOracle(
[NotNull] this AbpDbContextConfigurationContext context, [NotNull] this AbpDbContextConfigurationContext context,
[CanBeNull] Action<OracleDbContextOptionsBuilder> oracleOptionsAction = null) Action<OracleDbContextOptionsBuilder>? oracleOptionsAction = null)
{ {
if (context.ExistingConnection != null) if (context.ExistingConnection != null)
{ {

4
framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsOracleExtensions.cs

@ -8,7 +8,7 @@ public static class AbpDbContextOptionsOracleExtensions
{ {
public static void UseOracle( public static void UseOracle(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<OracleDbContextOptionsBuilder> oracleOptionsAction = null) Action<OracleDbContextOptionsBuilder>? oracleOptionsAction = null)
{ {
options.Configure(context => options.Configure(context =>
{ {
@ -18,7 +18,7 @@ public static class AbpDbContextOptionsOracleExtensions
public static void UseOracle<TDbContext>( public static void UseOracle<TDbContext>(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<OracleDbContextOptionsBuilder> oracleOptionsAction = null) Action<OracleDbContextOptionsBuilder>? oracleOptionsAction = null)
where TDbContext : AbpDbContext<TDbContext> where TDbContext : AbpDbContext<TDbContext>
{ {
options.Configure<TDbContext>(context => options.Configure<TDbContext>(context =>

2
framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.EntityFrameworkCore.PostgreSql</AssemblyName> <AssemblyName>Volo.Abp.EntityFrameworkCore.PostgreSql</AssemblyName>
<PackageId>Volo.Abp.EntityFrameworkCore.PostgreSql</PackageId> <PackageId>Volo.Abp.EntityFrameworkCore.PostgreSql</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

4
framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextPostgreSqlExtensions.cs

@ -11,14 +11,14 @@ public static class AbpDbContextConfigurationContextPostgreSqlExtensions
[Obsolete("Use 'UseNpgsql(...)' method instead. This will be removed in future versions.")] [Obsolete("Use 'UseNpgsql(...)' method instead. This will be removed in future versions.")]
public static DbContextOptionsBuilder UsePostgreSql( public static DbContextOptionsBuilder UsePostgreSql(
[NotNull] this AbpDbContextConfigurationContext context, [NotNull] this AbpDbContextConfigurationContext context,
[CanBeNull] Action<NpgsqlDbContextOptionsBuilder> postgreSqlOptionsAction = null) Action<NpgsqlDbContextOptionsBuilder>? postgreSqlOptionsAction = null)
{ {
return context.UseNpgsql(postgreSqlOptionsAction); return context.UseNpgsql(postgreSqlOptionsAction);
} }
public static DbContextOptionsBuilder UseNpgsql( public static DbContextOptionsBuilder UseNpgsql(
[NotNull] this AbpDbContextConfigurationContext context, [NotNull] this AbpDbContextConfigurationContext context,
[CanBeNull] Action<NpgsqlDbContextOptionsBuilder> postgreSqlOptionsAction = null) Action<NpgsqlDbContextOptionsBuilder>? postgreSqlOptionsAction = null)
{ {
if (context.ExistingConnection != null) if (context.ExistingConnection != null)
{ {

8
framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsPostgreSqlExtensions.cs

@ -9,7 +9,7 @@ public static class AbpDbContextOptionsPostgreSqlExtensions
[Obsolete("Use 'UseNpgsql(...)' method instead. This will be removed in future versions.")] [Obsolete("Use 'UseNpgsql(...)' method instead. This will be removed in future versions.")]
public static void UsePostgreSql( public static void UsePostgreSql(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<NpgsqlDbContextOptionsBuilder> postgreSqlOptionsAction = null) Action<NpgsqlDbContextOptionsBuilder>? postgreSqlOptionsAction = null)
{ {
options.Configure(context => options.Configure(context =>
{ {
@ -20,7 +20,7 @@ public static class AbpDbContextOptionsPostgreSqlExtensions
[Obsolete("Use 'UseNpgsql(...)' method instead. This will be removed in future versions.")] [Obsolete("Use 'UseNpgsql(...)' method instead. This will be removed in future versions.")]
public static void UsePostgreSql<TDbContext>( public static void UsePostgreSql<TDbContext>(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<NpgsqlDbContextOptionsBuilder> postgreSqlOptionsAction = null) Action<NpgsqlDbContextOptionsBuilder>? postgreSqlOptionsAction = null)
where TDbContext : AbpDbContext<TDbContext> where TDbContext : AbpDbContext<TDbContext>
{ {
options.Configure<TDbContext>(context => options.Configure<TDbContext>(context =>
@ -31,7 +31,7 @@ public static class AbpDbContextOptionsPostgreSqlExtensions
public static void UseNpgsql( public static void UseNpgsql(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<NpgsqlDbContextOptionsBuilder> postgreSqlOptionsAction = null) Action<NpgsqlDbContextOptionsBuilder>? postgreSqlOptionsAction = null)
{ {
options.Configure(context => options.Configure(context =>
{ {
@ -41,7 +41,7 @@ public static class AbpDbContextOptionsPostgreSqlExtensions
public static void UseNpgsql<TDbContext>( public static void UseNpgsql<TDbContext>(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<NpgsqlDbContextOptionsBuilder> postgreSqlOptionsAction = null) Action<NpgsqlDbContextOptionsBuilder>? postgreSqlOptionsAction = null)
where TDbContext : AbpDbContext<TDbContext> where TDbContext : AbpDbContext<TDbContext>
{ {
options.Configure<TDbContext>(context => options.Configure<TDbContext>(context =>

2
framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/ConnectionStrings/NpgsqlConnectionStringChecker.cs

@ -25,7 +25,7 @@ public class NpgsqlConnectionStringChecker : IConnectionStringChecker, ITransien
await using var conn = new NpgsqlConnection(connString.ConnectionString); await using var conn = new NpgsqlConnection(connString.ConnectionString);
await conn.OpenAsync(); await conn.OpenAsync();
result.Connected = true; result.Connected = true;
await conn.ChangeDatabaseAsync(oldDatabaseName); await conn.ChangeDatabaseAsync(oldDatabaseName!);
result.DatabaseExists = true; result.DatabaseExists = true;
await conn.CloseAsync(); await conn.CloseAsync();

2
framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.EntityFrameworkCore.SqlServer</AssemblyName> <AssemblyName>Volo.Abp.EntityFrameworkCore.SqlServer</AssemblyName>
<PackageId>Volo.Abp.EntityFrameworkCore.SqlServer</PackageId> <PackageId>Volo.Abp.EntityFrameworkCore.SqlServer</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

2
framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqlServerExtensions.cs

@ -10,7 +10,7 @@ public static class AbpDbContextConfigurationContextSqlServerExtensions
{ {
public static DbContextOptionsBuilder UseSqlServer( public static DbContextOptionsBuilder UseSqlServer(
[NotNull] this AbpDbContextConfigurationContext context, [NotNull] this AbpDbContextConfigurationContext context,
[CanBeNull] Action<SqlServerDbContextOptionsBuilder> sqlServerOptionsAction = null) Action<SqlServerDbContextOptionsBuilder>? sqlServerOptionsAction = null)
{ {
if (context.ExistingConnection != null) if (context.ExistingConnection != null)
{ {

4
framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqlServerExtensions.cs

@ -8,7 +8,7 @@ public static class AbpDbContextOptionsSqlServerExtensions
{ {
public static void UseSqlServer( public static void UseSqlServer(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<SqlServerDbContextOptionsBuilder> sqlServerOptionsAction = null) Action<SqlServerDbContextOptionsBuilder>? sqlServerOptionsAction = null)
{ {
options.Configure(context => options.Configure(context =>
{ {
@ -18,7 +18,7 @@ public static class AbpDbContextOptionsSqlServerExtensions
public static void UseSqlServer<TDbContext>( public static void UseSqlServer<TDbContext>(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<SqlServerDbContextOptionsBuilder> sqlServerOptionsAction = null) Action<SqlServerDbContextOptionsBuilder>? sqlServerOptionsAction = null)
where TDbContext : AbpDbContext<TDbContext> where TDbContext : AbpDbContext<TDbContext>
{ {
options.Configure<TDbContext>(context => options.Configure<TDbContext>(context =>

2
framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.EntityFrameworkCore.Sqlite</AssemblyName> <AssemblyName>Volo.Abp.EntityFrameworkCore.Sqlite</AssemblyName>
<PackageId>Volo.Abp.EntityFrameworkCore.Sqlite</PackageId> <PackageId>Volo.Abp.EntityFrameworkCore.Sqlite</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

4
framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextSqliteExtensions.cs

@ -11,7 +11,7 @@ public static class AbpDbContextConfigurationContextSqliteExtensions
{ {
public static DbContextOptionsBuilder UseSqlite( public static DbContextOptionsBuilder UseSqlite(
[NotNull] this AbpDbContextConfigurationContext context, [NotNull] this AbpDbContextConfigurationContext context,
[CanBeNull] Action<SqliteDbContextOptionsBuilder> sqliteOptionsAction = null) Action<SqliteDbContextOptionsBuilder>? sqliteOptionsAction = null)
{ {
if (context.ExistingConnection != null) if (context.ExistingConnection != null)
{ {
@ -34,7 +34,7 @@ public static class AbpDbContextConfigurationContextSqliteExtensions
public static DbContextOptionsBuilder UseSqlite( public static DbContextOptionsBuilder UseSqlite(
[NotNull] this AbpDbContextConfigurationContext context, [NotNull] this AbpDbContextConfigurationContext context,
DbConnection connection, DbConnection connection,
[CanBeNull] Action<SqliteDbContextOptionsBuilder> sqliteOptionsAction = null) Action<SqliteDbContextOptionsBuilder>? sqliteOptionsAction = null)
{ {
if (context.ExistingConnection != null) if (context.ExistingConnection != null)
{ {

4
framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsSqliteExtensions.cs

@ -8,7 +8,7 @@ public static class AbpDbContextOptionsSqliteExtensions
{ {
public static void UseSqlite( public static void UseSqlite(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<SqliteDbContextOptionsBuilder> sqliteOptionsAction = null) Action<SqliteDbContextOptionsBuilder>? sqliteOptionsAction = null)
{ {
options.Configure(context => options.Configure(context =>
{ {
@ -18,7 +18,7 @@ public static class AbpDbContextOptionsSqliteExtensions
public static void UseSqlite<TDbContext>( public static void UseSqlite<TDbContext>(
[NotNull] this AbpDbContextOptions options, [NotNull] this AbpDbContextOptions options,
[CanBeNull] Action<SqliteDbContextOptionsBuilder> sqliteOptionsAction = null) Action<SqliteDbContextOptionsBuilder>? sqliteOptionsAction = null)
where TDbContext : AbpDbContext<TDbContext> where TDbContext : AbpDbContext<TDbContext>
{ {
options.Configure<TDbContext>(context => options.Configure<TDbContext>(context =>

2
framework/src/Volo.Abp.EntityFrameworkCore/Microsoft/Extensions/DependencyInjection/AbpEfCoreServiceCollectionExtensions.cs

@ -13,7 +13,7 @@ public static class AbpEfCoreServiceCollectionExtensions
{ {
public static IServiceCollection AddAbpDbContext<TDbContext>( public static IServiceCollection AddAbpDbContext<TDbContext>(
this IServiceCollection services, this IServiceCollection services,
Action<IAbpDbContextRegistrationOptionsBuilder> optionsBuilder = null) Action<IAbpDbContextRegistrationOptionsBuilder>? optionsBuilder = null)
where TDbContext : AbpDbContext<TDbContext> where TDbContext : AbpDbContext<TDbContext>
{ {
services.AddMemoryCache(); services.AddMemoryCache();

2
framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.EntityFrameworkCore</AssemblyName> <AssemblyName>Volo.Abp.EntityFrameworkCore</AssemblyName>
<PackageId>Volo.Abp.EntityFrameworkCore</PackageId> <PackageId>Volo.Abp.EntityFrameworkCore</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

20
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs

@ -26,11 +26,11 @@ public class EfCoreRepository<TDbContext, TEntity> : RepositoryBase<TEntity>, IE
protected virtual TDbContext DbContext => GetDbContext(); protected virtual TDbContext DbContext => GetDbContext();
[Obsolete("Use GetDbContextAsync() method.")] [Obsolete("Use GetDbContextAsync() method.")]
DbContext IEfCoreRepository<TEntity>.DbContext => GetDbContext() as DbContext; DbContext IEfCoreRepository<TEntity>.DbContext => (GetDbContext() as DbContext)!;
async Task<DbContext> IEfCoreRepository<TEntity>.GetDbContextAsync() async Task<DbContext> IEfCoreRepository<TEntity>.GetDbContextAsync()
{ {
return await GetDbContextAsync() as DbContext; return (await GetDbContextAsync() as DbContext)!;
} }
[Obsolete("Use GetDbContextAsync() method.")] [Obsolete("Use GetDbContextAsync() method.")]
@ -80,7 +80,7 @@ public class EfCoreRepository<TDbContext, TEntity> : RepositoryBase<TEntity>, IE
return (await GetDbContextAsync()).Database.GetDbConnection(); return (await GetDbContextAsync()).Database.GetDbConnection();
} }
protected async Task<IDbTransaction> GetDbTransactionAsync() protected async Task<IDbTransaction?> GetDbTransactionAsync()
{ {
return (await GetDbContextAsync()).Database.CurrentTransaction?.GetDbTransaction(); return (await GetDbContextAsync()).Database.CurrentTransaction?.GetDbTransaction();
} }
@ -92,7 +92,7 @@ public class EfCoreRepository<TDbContext, TEntity> : RepositoryBase<TEntity>, IE
public virtual IGuidGenerator GuidGenerator => LazyServiceProvider.LazyGetService<IGuidGenerator>(SimpleGuidGenerator.Instance); public virtual IGuidGenerator GuidGenerator => LazyServiceProvider.LazyGetService<IGuidGenerator>(SimpleGuidGenerator.Instance);
public IEfCoreBulkOperationProvider BulkOperationProvider => LazyServiceProvider.LazyGetService<IEfCoreBulkOperationProvider>(); public IEfCoreBulkOperationProvider? BulkOperationProvider => LazyServiceProvider.LazyGetService<IEfCoreBulkOperationProvider>();
public EfCoreRepository(IDbContextProvider<TDbContext> dbContextProvider) public EfCoreRepository(IDbContextProvider<TDbContext> dbContextProvider)
{ {
@ -301,7 +301,7 @@ public class EfCoreRepository<TDbContext, TEntity> : RepositoryBase<TEntity>, IE
await (await GetDbContextAsync()).SaveChangesAsync(cancellationToken); await (await GetDbContextAsync()).SaveChangesAsync(cancellationToken);
} }
public async override Task<TEntity> FindAsync( public async override Task<TEntity?> FindAsync(
Expression<Func<TEntity, bool>> predicate, Expression<Func<TEntity, bool>> predicate,
bool includeDetails = true, bool includeDetails = true,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
@ -353,7 +353,7 @@ public class EfCoreRepository<TDbContext, TEntity> : RepositoryBase<TEntity>, IE
public virtual async Task EnsurePropertyLoadedAsync<TProperty>( public virtual async Task EnsurePropertyLoadedAsync<TProperty>(
TEntity entity, TEntity entity,
Expression<Func<TEntity, TProperty>> propertyExpression, Expression<Func<TEntity, TProperty?>> propertyExpression,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
where TProperty : class where TProperty : class
{ {
@ -464,13 +464,13 @@ public class EfCoreRepository<TDbContext, TEntity, TKey> : EfCoreRepository<TDbC
return entity; return entity;
} }
public virtual async Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default) public virtual async Task<TEntity?> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{ {
return includeDetails return includeDetails
? await (await WithDetailsAsync()).OrderBy(e => e.Id).FirstOrDefaultAsync(e => e.Id.Equals(id), GetCancellationToken(cancellationToken)) ? await (await WithDetailsAsync()).OrderBy(e => e.Id).FirstOrDefaultAsync(e => e.Id!.Equals(id), GetCancellationToken(cancellationToken))
: !ShouldTrackingEntityChange() : !ShouldTrackingEntityChange()
? await (await GetQueryableAsync()).OrderBy(e => e.Id).FirstOrDefaultAsync(e => e.Id.Equals(id), GetCancellationToken(cancellationToken)) ? await (await GetQueryableAsync()).OrderBy(e => e.Id).FirstOrDefaultAsync(e => e.Id!.Equals(id), GetCancellationToken(cancellationToken))
: await (await GetDbSetAsync()).FindAsync(new object[] {id}, GetCancellationToken(cancellationToken)); : await (await GetDbSetAsync()).FindAsync(new object[] {id!}, GetCancellationToken(cancellationToken));
} }
public virtual async Task DeleteAsync(TKey id, bool autoSave = false, CancellationToken cancellationToken = default) public virtual async Task DeleteAsync(TKey id, bool autoSave = false, CancellationToken cancellationToken = default)

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

@ -37,7 +37,7 @@ namespace Volo.Abp.EntityFrameworkCore;
public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext, ITransientDependency public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext, ITransientDependency
where TDbContext : DbContext where TDbContext : DbContext
{ {
public IAbpLazyServiceProvider LazyServiceProvider { get; set; } public IAbpLazyServiceProvider LazyServiceProvider { get; set; } = default!;
protected virtual Guid? CurrentTenantId => CurrentTenant?.Id; protected virtual Guid? CurrentTenantId => CurrentTenant?.Id;
@ -74,21 +74,21 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
.GetMethod( .GetMethod(
nameof(ConfigureBaseProperties), nameof(ConfigureBaseProperties),
BindingFlags.Instance | BindingFlags.NonPublic BindingFlags.Instance | BindingFlags.NonPublic
); )!;
private static readonly MethodInfo ConfigureValueConverterMethodInfo private static readonly MethodInfo ConfigureValueConverterMethodInfo
= typeof(AbpDbContext<TDbContext>) = typeof(AbpDbContext<TDbContext>)
.GetMethod( .GetMethod(
nameof(ConfigureValueConverter), nameof(ConfigureValueConverter),
BindingFlags.Instance | BindingFlags.NonPublic BindingFlags.Instance | BindingFlags.NonPublic
); )!;
private static readonly MethodInfo ConfigureValueGeneratedMethodInfo private static readonly MethodInfo ConfigureValueGeneratedMethodInfo
= typeof(AbpDbContext<TDbContext>) = typeof(AbpDbContext<TDbContext>)
.GetMethod( .GetMethod(
nameof(ConfigureValueGenerated), nameof(ConfigureValueGenerated),
BindingFlags.Instance | BindingFlags.NonPublic BindingFlags.Instance | BindingFlags.NonPublic
); )!;
protected AbpDbContext(DbContextOptions<TDbContext> options) protected AbpDbContext(DbContextOptions<TDbContext> options)
: base(options) : base(options)
@ -157,7 +157,7 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
try try
{ {
var auditLog = AuditingManager?.Current?.Log; var auditLog = AuditingManager?.Current?.Log;
List<EntityChangeInfo> entityChangeList = null; List<EntityChangeInfo>? entityChangeList = null;
if (auditLog != null) if (auditLog != null)
{ {
entityChangeList = EntityHistoryHelper.CreateChangeList(ChangeTracker.Entries().ToList()); entityChangeList = EntityHistoryHelper.CreateChangeList(ChangeTracker.Entries().ToList());
@ -174,7 +174,7 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
if (entityChangeList != null) if (entityChangeList != null)
{ {
EntityHistoryHelper.UpdateChangeList(entityChangeList); EntityHistoryHelper.UpdateChangeList(entityChangeList);
auditLog.EntityChanges.AddRange(entityChangeList); auditLog!.EntityChanges.AddRange(entityChangeList);
Logger.LogDebug($"Added {entityChangeList.Count} entity changes to the current audit log"); Logger.LogDebug($"Added {entityChangeList.Count} entity changes to the current audit log");
} }
@ -249,13 +249,13 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
} }
} }
protected virtual void ChangeTracker_Tracked(object sender, EntityTrackedEventArgs e) protected virtual void ChangeTracker_Tracked(object? sender, EntityTrackedEventArgs e)
{ {
FillExtraPropertiesForTrackedEntities(e); FillExtraPropertiesForTrackedEntities(e);
PublishEventsForTrackedEntity(e.Entry); PublishEventsForTrackedEntity(e.Entry);
} }
protected virtual void ChangeTracker_StateChanged(object sender, EntityStateChangedEventArgs e) protected virtual void ChangeTracker_StateChanged(object? sender, EntityStateChangedEventArgs e)
{ {
PublishEventsForTrackedEntity(e.Entry); PublishEventsForTrackedEntity(e.Entry);
} }
@ -453,11 +453,11 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
if (conversionType == typeof(Guid)) if (conversionType == typeof(Guid))
{ {
entryProperty.CurrentValue = TypeDescriptor.GetConverter(conversionType).ConvertFromInvariantString(entityProperty.ToString()); entryProperty.CurrentValue = TypeDescriptor.GetConverter(conversionType).ConvertFromInvariantString(entityProperty.ToString()!);
} }
else if (conversionType.IsEnum) else if (conversionType.IsEnum)
{ {
entryProperty.CurrentValue = Enum.Parse(conversionType, entityProperty.ToString(), ignoreCase: true); entryProperty.CurrentValue = Enum.Parse(conversionType, entityProperty.ToString()!, ignoreCase: true);
} }
else else
{ {
@ -560,7 +560,7 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
return; return;
} }
var idProperty = entry.Property("Id").Metadata.PropertyInfo; var idProperty = entry.Property("Id").Metadata.PropertyInfo!;
//Check for DatabaseGeneratedAttribute //Check for DatabaseGeneratedAttribute
var dbGeneratedAttr = ReflectionHelper var dbGeneratedAttr = ReflectionHelper
@ -669,7 +669,7 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
} }
var idPropertyBuilder = modelBuilder.Entity<TEntity>().Property(x => ((IEntity<Guid>)x).Id); var idPropertyBuilder = modelBuilder.Entity<TEntity>().Property(x => ((IEntity<Guid>)x).Id);
if (idPropertyBuilder.Metadata.PropertyInfo.IsDefined(typeof(DatabaseGeneratedAttribute), true)) if (idPropertyBuilder.Metadata.PropertyInfo!.IsDefined(typeof(DatabaseGeneratedAttribute), true))
{ {
return; return;
} }
@ -692,10 +692,10 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
return false; return false;
} }
protected virtual Expression<Func<TEntity, bool>> CreateFilterExpression<TEntity>() protected virtual Expression<Func<TEntity, bool>>? CreateFilterExpression<TEntity>()
where TEntity : class where TEntity : class
{ {
Expression<Func<TEntity, bool>> expression = null; Expression<Func<TEntity, bool>>? expression = null;
if (typeof(ISoftDelete).IsAssignableFrom(typeof(TEntity))) if (typeof(ISoftDelete).IsAssignableFrom(typeof(TEntity)))
{ {

2
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContextOptions.cs

@ -12,7 +12,7 @@ public class AbpDbContextOptions
{ {
internal List<Action<AbpDbContextConfigurationContext>> DefaultPreConfigureActions { get; } internal List<Action<AbpDbContextConfigurationContext>> DefaultPreConfigureActions { get; }
internal Action<AbpDbContextConfigurationContext> DefaultConfigureAction { get; set; } internal Action<AbpDbContextConfigurationContext>? DefaultConfigureAction { get; set; }
internal Dictionary<Type, List<object>> PreConfigureActions { get; } internal Dictionary<Type, List<object>> PreConfigureActions { get; }

12
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DependencyInjection/AbpDbContextConfigurationContext.cs

@ -14,17 +14,17 @@ public class AbpDbContextConfigurationContext : IServiceProviderAccessor
public string ConnectionString { get; } public string ConnectionString { get; }
public string ConnectionStringName { get; } public string? ConnectionStringName { get; }
public DbConnection ExistingConnection { get; } public DbConnection? ExistingConnection { get; }
public DbContextOptionsBuilder DbContextOptions { get; protected set; } public DbContextOptionsBuilder DbContextOptions { get; protected set; }
public AbpDbContextConfigurationContext( public AbpDbContextConfigurationContext(
[NotNull] string connectionString, [NotNull] string connectionString,
[NotNull] IServiceProvider serviceProvider, [NotNull] IServiceProvider serviceProvider,
[CanBeNull] string connectionStringName, string? connectionStringName,
[CanBeNull] DbConnection existingConnection) DbConnection? existingConnection)
{ {
ConnectionString = connectionString; ConnectionString = connectionString;
ServiceProvider = serviceProvider; ServiceProvider = serviceProvider;
@ -45,8 +45,8 @@ public class AbpDbContextConfigurationContext<TDbContext> : AbpDbContextConfigur
public AbpDbContextConfigurationContext( public AbpDbContextConfigurationContext(
string connectionString, string connectionString,
[NotNull] IServiceProvider serviceProvider, [NotNull] IServiceProvider serviceProvider,
[CanBeNull] string connectionStringName, string? connectionStringName,
[CanBeNull] DbConnection existingConnection) DbConnection? existingConnection)
: base( : base(
connectionString, connectionString,
serviceProvider, serviceProvider,

8
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DependencyInjection/AbpEntityOptions.cs

@ -11,7 +11,7 @@ public class AbpEntityOptions<TEntity>
{ {
public static AbpEntityOptions<TEntity> Empty { get; } = new AbpEntityOptions<TEntity>(); public static AbpEntityOptions<TEntity> Empty { get; } = new AbpEntityOptions<TEntity>();
public Func<IQueryable<TEntity>, IQueryable<TEntity>> DefaultWithDetailsFunc { get; set; } public Func<IQueryable<TEntity>, IQueryable<TEntity>>? DefaultWithDetailsFunc { get; set; }
} }
public class AbpEntityOptions public class AbpEntityOptions
@ -23,7 +23,7 @@ public class AbpEntityOptions
_options = new Dictionary<Type, object>(); _options = new Dictionary<Type, object>();
} }
public AbpEntityOptions<TEntity> GetOrNull<TEntity>() public AbpEntityOptions<TEntity>? GetOrNull<TEntity>()
where TEntity : IEntity where TEntity : IEntity
{ {
return _options.GetOrDefault(typeof(TEntity)) as AbpEntityOptions<TEntity>; return _options.GetOrDefault(typeof(TEntity)) as AbpEntityOptions<TEntity>;
@ -35,10 +35,10 @@ public class AbpEntityOptions
Check.NotNull(optionsAction, nameof(optionsAction)); Check.NotNull(optionsAction, nameof(optionsAction));
optionsAction( optionsAction(
_options.GetOrAdd( (_options.GetOrAdd(
typeof(TEntity), typeof(TEntity),
() => new AbpEntityOptions<TEntity>() () => new AbpEntityOptions<TEntity>()
) as AbpEntityOptions<TEntity> ) as AbpEntityOptions<TEntity>)!
); );
} }
} }

4
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DependencyInjection/DbContextCreationContext.cs

@ -6,14 +6,14 @@ namespace Volo.Abp.EntityFrameworkCore.DependencyInjection;
public class DbContextCreationContext public class DbContextCreationContext
{ {
public static DbContextCreationContext Current => _current.Value; public static DbContextCreationContext Current => _current.Value!;
private static readonly AsyncLocal<DbContextCreationContext> _current = new AsyncLocal<DbContextCreationContext>(); private static readonly AsyncLocal<DbContextCreationContext> _current = new AsyncLocal<DbContextCreationContext>();
public string ConnectionStringName { get; } public string ConnectionStringName { get; }
public string ConnectionString { get; } public string ConnectionString { get; }
public DbConnection ExistingConnection { get; internal set; } public DbConnection? ExistingConnection { get; internal set; }
public DbContextCreationContext(string connectionStringName, string connectionString) public DbContextCreationContext(string connectionStringName, string connectionString)
{ {

2
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DependencyInjection/DbContextOptionsFactory.cs

@ -43,7 +43,7 @@ public static class DbContextOptionsFactory
var preConfigureActions = options.PreConfigureActions.GetOrDefault(typeof(TDbContext)); var preConfigureActions = options.PreConfigureActions.GetOrDefault(typeof(TDbContext));
if (!preConfigureActions.IsNullOrEmpty()) if (!preConfigureActions.IsNullOrEmpty())
{ {
foreach (var preConfigureAction in preConfigureActions) foreach (var preConfigureAction in preConfigureActions!)
{ {
((Action<AbpDbContextConfigurationContext<TDbContext>>)preConfigureAction).Invoke(context); ((Action<AbpDbContextConfigurationContext<TDbContext>>)preConfigureAction).Invoke(context);
} }

6
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DistributedEvents/IncomingEventRecord.cs

@ -15,11 +15,11 @@ public class IncomingEventRecord :
public ExtraPropertyDictionary ExtraProperties { get; private set; } public ExtraPropertyDictionary ExtraProperties { get; private set; }
public string MessageId { get; private set; } public string MessageId { get; private set; } = default!;
public string EventName { get; private set; } public string EventName { get; private set; } = default!;
public byte[] EventData { get; private set; } public byte[] EventData { get; private set; } = default!;
public DateTime CreationTime { get; private set; } public DateTime CreationTime { get; private set; }

4
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/DistributedEvents/OutgoingEventRecord.cs

@ -15,9 +15,9 @@ public class OutgoingEventRecord :
public ExtraPropertyDictionary ExtraProperties { get; private set; } public ExtraPropertyDictionary ExtraProperties { get; private set; }
public string EventName { get; private set; } public string EventName { get; private set; } = default!;
public byte[] EventData { get; private set; } public byte[] EventData { get; private set; } = default!;
public DateTime CreationTime { get; private set; } public DateTime CreationTime { get; private set; }

12
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs

@ -68,12 +68,12 @@ public class EfCoreAsyncQueryableProvider : IAsyncQueryableProvider, ISingletonD
return queryable.FirstAsync(predicate, cancellationToken); return queryable.FirstAsync(predicate, cancellationToken);
} }
public Task<T> FirstOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T?> FirstOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)
{ {
return queryable.FirstOrDefaultAsync(cancellationToken); return queryable.FirstOrDefaultAsync(cancellationToken);
} }
public Task<T> FirstOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate, public Task<T?> FirstOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return queryable.FirstOrDefaultAsync(predicate, cancellationToken); return queryable.FirstOrDefaultAsync(predicate, cancellationToken);
@ -89,12 +89,12 @@ public class EfCoreAsyncQueryableProvider : IAsyncQueryableProvider, ISingletonD
return queryable.LastAsync(predicate, cancellationToken); return queryable.LastAsync(predicate, cancellationToken);
} }
public Task<T> LastOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T?> LastOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)
{ {
return queryable.LastOrDefaultAsync(cancellationToken); return queryable.LastOrDefaultAsync(cancellationToken);
} }
public Task<T> LastOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate, public Task<T?> LastOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return queryable.LastOrDefaultAsync(predicate, cancellationToken); return queryable.LastOrDefaultAsync(predicate, cancellationToken);
@ -110,12 +110,12 @@ public class EfCoreAsyncQueryableProvider : IAsyncQueryableProvider, ISingletonD
return queryable.SingleAsync(predicate, cancellationToken); return queryable.SingleAsync(predicate, cancellationToken);
} }
public Task<T> SingleOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T?> SingleOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)
{ {
return queryable.SingleOrDefaultAsync(cancellationToken); return queryable.SingleOrDefaultAsync(cancellationToken);
} }
public Task<T> SingleOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate, public Task<T?> SingleOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return queryable.SingleOrDefaultAsync(predicate, cancellationToken); return queryable.SingleOrDefaultAsync(predicate, cancellationToken);

13
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs

@ -69,8 +69,7 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency
return list; return list;
} }
[CanBeNull] protected virtual EntityChangeInfo? CreateEntityChangeOrNull(EntityEntry entityEntry)
protected virtual EntityChangeInfo CreateEntityChangeOrNull(EntityEntry entityEntry)
{ {
var entity = entityEntry.Entity; var entity = entityEntry.Entity;
@ -138,7 +137,7 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency
} }
} }
protected virtual string GetEntityId(object entityAsObj) protected virtual string? GetEntityId(object entityAsObj)
{ {
if ((entityAsObj is IEntity entity)) if ((entityAsObj is IEntity entity))
{ {
@ -370,10 +369,10 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency
// Add foreign key // Add foreign key
entityChange.PropertyChanges.Add(new EntityPropertyChangeInfo entityChange.PropertyChanges.Add(new EntityPropertyChangeInfo
{ {
NewValue = JsonSerializer.Serialize(propertyEntry.CurrentValue), NewValue = JsonSerializer.Serialize(propertyEntry.CurrentValue!),
OriginalValue = JsonSerializer.Serialize(propertyEntry.OriginalValue), OriginalValue = JsonSerializer.Serialize(propertyEntry.OriginalValue!),
PropertyName = property.Name, PropertyName = property.Name,
PropertyTypeFullName = property.ClrType.GetFirstGenericArgumentIfNullable().FullName PropertyTypeFullName = property.ClrType.GetFirstGenericArgumentIfNullable().FullName!
}); });
} }
@ -382,7 +381,7 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency
if (propertyChange.OriginalValue == propertyChange.NewValue) if (propertyChange.OriginalValue == propertyChange.NewValue)
{ {
var newValue = JsonSerializer.Serialize(propertyEntry.CurrentValue); var newValue = JsonSerializer.Serialize(propertyEntry.CurrentValue!);
if (newValue == propertyChange.NewValue) if (newValue == propertyChange.NewValue)
{ {
// No change // No change

12
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/IEfCoreDbContext.cs

@ -60,17 +60,17 @@ public interface IEfCoreDbContext : IDisposable, IInfrastructure<IServiceProvide
EntityEntry Entry([NotNull] object entity); EntityEntry Entry([NotNull] object entity);
object Find([NotNull] Type entityType, [NotNull] params object[] keyValues); object? Find([NotNull] Type entityType, [NotNull] params object[] keyValues);
TEntity Find<TEntity>([NotNull] params object[] keyValues) where TEntity : class; TEntity? Find<TEntity>([NotNull] params object[] keyValues) where TEntity : class;
ValueTask<object> FindAsync([NotNull] Type entityType, [NotNull] object[] keyValues, CancellationToken cancellationToken); ValueTask<object?> FindAsync([NotNull] Type entityType, [NotNull] object[] keyValues, CancellationToken cancellationToken);
ValueTask<TEntity> FindAsync<TEntity>([NotNull] object[] keyValues, CancellationToken cancellationToken) where TEntity : class; ValueTask<TEntity?> FindAsync<TEntity>([NotNull] object[] keyValues, CancellationToken cancellationToken) where TEntity : class;
ValueTask<TEntity> FindAsync<TEntity>([NotNull] params object[] keyValues) where TEntity : class; ValueTask<TEntity?> FindAsync<TEntity>([NotNull] params object[] keyValues) where TEntity : class;
ValueTask<object> FindAsync([NotNull] Type entityType, [NotNull] params object[] keyValues); ValueTask<object?> FindAsync([NotNull] Type entityType, [NotNull] params object[] keyValues);
EntityEntry<TEntity> Remove<TEntity>([NotNull] TEntity entity) where TEntity : class; EntityEntry<TEntity> Remove<TEntity>([NotNull] TEntity entity) where TEntity : class;

4
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/Migrations/EfCoreDatabaseMigrationEventHandlerBase.cs

@ -210,7 +210,7 @@ public abstract class EfCoreDatabaseMigrationEventHandlerBase<TDbContext> :
else else
{ {
var tenantConfiguration = await TenantStore.FindAsync(tenantId.Value); var tenantConfiguration = await TenantStore.FindAsync(tenantId.Value);
if (!tenantConfiguration.ConnectionStrings.Default.IsNullOrWhiteSpace() || if (!tenantConfiguration!.ConnectionStrings!.Default.IsNullOrWhiteSpace() ||
!tenantConfiguration.ConnectionStrings.GetOrDefault(DatabaseName).IsNullOrWhiteSpace()) !tenantConfiguration.ConnectionStrings.GetOrDefault(DatabaseName).IsNullOrWhiteSpace())
{ {
//Migrating the tenant database (only if tenant has a separate database) //Migrating the tenant database (only if tenant has a separate database)
@ -301,7 +301,7 @@ public abstract class EfCoreDatabaseMigrationEventHandlerBase<TDbContext> :
return 0; return 0;
} }
return int.Parse(tryCountAsString); return int.Parse(tryCountAsString!);
} }
private static void SetEventTryCount(EtoBase eventData, int count) private static void SetEventTryCount(EtoBase eventData, int count)

8
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/Modeling/AbpModelBuilderConfigurationOptions.cs

@ -12,14 +12,14 @@ public class AbpModelBuilderConfigurationOptions
_tablePrefix = value; _tablePrefix = value;
} }
} }
private string _tablePrefix;
[CanBeNull] private string _tablePrefix = default!;
public string Schema { get; set; }
public string? Schema { get; set; }
public AbpModelBuilderConfigurationOptions( public AbpModelBuilderConfigurationOptions(
[NotNull] string tablePrefix = "", [NotNull] string tablePrefix = "",
[CanBeNull] string schema = null) string? schema = null)
{ {
Check.NotNull(tablePrefix, nameof(tablePrefix)); Check.NotNull(tablePrefix, nameof(tablePrefix));

2
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/QueryFilterExpressionHelper.cs

@ -29,7 +29,7 @@ public static class QueryFilterExpressionHelper
_newValue = newValue; _newValue = newValue;
} }
public override Expression Visit(Expression node) public override Expression? Visit(Expression? node)
{ {
return node == _oldValue ? _newValue : base.Visit(node); return node == _oldValue ? _newValue : base.Visit(node);
} }

2
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueComparers/ExtraPropertyDictionaryValueComparer.cs

@ -9,7 +9,7 @@ public class ExtraPropertyDictionaryValueComparer : ValueComparer<ExtraPropertyD
{ {
public ExtraPropertyDictionaryValueComparer() public ExtraPropertyDictionaryValueComparer()
: base( : base(
(d1, d2) => d1.SequenceEqual(d2), (d1, d2) => d1!.SequenceEqual(d2!),
d => d.Aggregate(0, (k, v) => HashCode.Combine(k, v.GetHashCode())), d => d.Aggregate(0, (k, v) => HashCode.Combine(k, v.GetHashCode())),
d => new ExtraPropertyDictionary(d)) d => new ExtraPropertyDictionary(d))
{ {

4
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueConverters/AbpDateTimeValueConverter.cs

@ -7,7 +7,7 @@ namespace Volo.Abp.EntityFrameworkCore.ValueConverters;
public class AbpDateTimeValueConverter : ValueConverter<DateTime, DateTime> public class AbpDateTimeValueConverter : ValueConverter<DateTime, DateTime>
{ {
public AbpDateTimeValueConverter(IClock clock, [CanBeNull] ConverterMappingHints mappingHints = null) public AbpDateTimeValueConverter(IClock clock, ConverterMappingHints? mappingHints = null)
: base( : base(
x => clock.Normalize(x), x => clock.Normalize(x),
x => clock.Normalize(x), mappingHints) x => clock.Normalize(x), mappingHints)
@ -17,7 +17,7 @@ public class AbpDateTimeValueConverter : ValueConverter<DateTime, DateTime>
public class AbpNullableDateTimeValueConverter : ValueConverter<DateTime?, DateTime?> public class AbpNullableDateTimeValueConverter : ValueConverter<DateTime?, DateTime?>
{ {
public AbpNullableDateTimeValueConverter(IClock clock, [CanBeNull] ConverterMappingHints mappingHints = null) public AbpNullableDateTimeValueConverter(IClock clock, ConverterMappingHints? mappingHints = null)
: base( : base(
x => x.HasValue ? clock.Normalize(x.Value) : x, x => x.HasValue ? clock.Normalize(x.Value) : x,
x => x.HasValue ? clock.Normalize(x.Value) : x, mappingHints) x => x.HasValue ? clock.Normalize(x.Value) : x, mappingHints)

2
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueConverters/AbpJsonValueConverter.cs

@ -29,6 +29,6 @@ public class AbpJsonValueConverter<TPropertyType> : ValueConverter<TPropertyType
private static TPropertyType DeserializeObject(string s) private static TPropertyType DeserializeObject(string s)
{ {
return JsonSerializer.Deserialize<TPropertyType>(s, DeserializeOptions); return JsonSerializer.Deserialize<TPropertyType>(s, DeserializeOptions)!;
} }
} }

12
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueConverters/ExtraPropertiesValueConverter.cs

@ -19,9 +19,9 @@ public class ExtraPropertiesValueConverter : ValueConverter<ExtraPropertyDiction
} }
private static string SerializeObject(ExtraPropertyDictionary extraProperties, Type entityType) private static string SerializeObject(ExtraPropertyDictionary extraProperties, Type? entityType)
{ {
var copyDictionary = new Dictionary<string, object>(extraProperties); var copyDictionary = new Dictionary<string, object?>(extraProperties);
if (entityType != null) if (entityType != null)
{ {
@ -49,7 +49,7 @@ public class ExtraPropertiesValueConverter : ValueConverter<ExtraPropertyDiction
} }
}; };
private static ExtraPropertyDictionary DeserializeObject(string extraPropertiesAsJson, Type entityType) private static ExtraPropertyDictionary DeserializeObject(string extraPropertiesAsJson, Type? entityType)
{ {
if (extraPropertiesAsJson.IsNullOrEmpty() || extraPropertiesAsJson == "{}") if (extraPropertiesAsJson.IsNullOrEmpty() || extraPropertiesAsJson == "{}")
{ {
@ -66,7 +66,7 @@ public class ExtraPropertiesValueConverter : ValueConverter<ExtraPropertyDiction
{ {
foreach (var property in objectExtension.GetProperties()) foreach (var property in objectExtension.GetProperties())
{ {
dictionary[property.Name] = GetNormalizedValue(dictionary, property); dictionary[property.Name] = GetNormalizedValue(dictionary!, property);
} }
} }
} }
@ -74,7 +74,7 @@ public class ExtraPropertiesValueConverter : ValueConverter<ExtraPropertyDiction
return dictionary; return dictionary;
} }
private static object GetNormalizedValue( private static object? GetNormalizedValue(
Dictionary<string, object> dictionary, Dictionary<string, object> dictionary,
ObjectExtensionPropertyInfo property) ObjectExtensionPropertyInfo property)
{ {
@ -88,7 +88,7 @@ public class ExtraPropertiesValueConverter : ValueConverter<ExtraPropertyDiction
{ {
if (property.Type.IsEnum) if (property.Type.IsEnum)
{ {
return Enum.Parse(property.Type, value.ToString(), true); return Enum.Parse(property.Type, value.ToString()!, true);
} }
//return Convert.ChangeType(value, property.Type); //return Convert.ChangeType(value, property.Type);

5
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/EfCoreObjectExtensionPropertyInfoExtensions.cs

@ -43,7 +43,7 @@ public static class EfCoreObjectExtensionPropertyInfoExtensions
[NotNull] [NotNull]
public static ObjectExtensionPropertyInfo MapEfCore( public static ObjectExtensionPropertyInfo MapEfCore(
[NotNull] this ObjectExtensionPropertyInfo propertyExtension, [NotNull] this ObjectExtensionPropertyInfo propertyExtension,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction) Action<EntityTypeBuilder, PropertyBuilder>? entityTypeAndPropertyBuildAction)
{ {
Check.NotNull(propertyExtension, nameof(propertyExtension)); Check.NotNull(propertyExtension, nameof(propertyExtension));
@ -56,8 +56,7 @@ public static class EfCoreObjectExtensionPropertyInfoExtensions
return propertyExtension; return propertyExtension;
} }
[CanBeNull] public static ObjectExtensionPropertyInfoEfCoreMappingOptions? GetEfCoreMappingOrNull(
public static ObjectExtensionPropertyInfoEfCoreMappingOptions GetEfCoreMappingOrNull(
[NotNull] this ObjectExtensionPropertyInfo propertyExtension) [NotNull] this ObjectExtensionPropertyInfo propertyExtension)
{ {
Check.NotNull(propertyExtension, nameof(propertyExtension)); Check.NotNull(propertyExtension, nameof(propertyExtension));

6
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/ObjectExtensionInfoEfCoreMappingOptions.cs

@ -10,11 +10,9 @@ public class ObjectExtensionInfoEfCoreMappingOptions
[NotNull] [NotNull]
public ObjectExtensionInfo ObjectExtension { get; } public ObjectExtensionInfo ObjectExtension { get; }
[CanBeNull] public Action<EntityTypeBuilder>? EntityTypeBuildAction { get; set; }
public Action<EntityTypeBuilder> EntityTypeBuildAction { get; set; }
[CanBeNull] public Action<ModelBuilder>? ModelBuildAction { get; set; }
public Action<ModelBuilder> ModelBuildAction { get; set; }
public ObjectExtensionInfoEfCoreMappingOptions( public ObjectExtensionInfoEfCoreMappingOptions(
[NotNull] ObjectExtensionInfo objectExtension, [NotNull] ObjectExtensionInfo objectExtension,

12
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/ObjectExtensionPropertyInfoEfCoreMappingOptions.cs

@ -13,17 +13,15 @@ public class ObjectExtensionPropertyInfoEfCoreMappingOptions
public ObjectExtensionInfo ObjectExtension => ExtensionProperty.ObjectExtension; public ObjectExtensionInfo ObjectExtension => ExtensionProperty.ObjectExtension;
[Obsolete("Use EntityTypeAndPropertyBuildAction property.")] [Obsolete("Use EntityTypeAndPropertyBuildAction property.")]
[CanBeNull] public Action<PropertyBuilder>? PropertyBuildAction { get; set; }
public Action<PropertyBuilder> PropertyBuildAction { get; set; }
[CanBeNull] public Action<EntityTypeBuilder, PropertyBuilder>? EntityTypeAndPropertyBuildAction { get; set; }
public Action<EntityTypeBuilder, PropertyBuilder> EntityTypeAndPropertyBuildAction { get; set; }
[Obsolete("Use other constructors.")] [Obsolete("Use other constructors.")]
public ObjectExtensionPropertyInfoEfCoreMappingOptions( public ObjectExtensionPropertyInfoEfCoreMappingOptions(
[NotNull] ObjectExtensionPropertyInfo extensionProperty, [NotNull] ObjectExtensionPropertyInfo extensionProperty,
[CanBeNull] Action<PropertyBuilder> propertyBuildAction = null, Action<PropertyBuilder>? propertyBuildAction = null,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction = null) Action<EntityTypeBuilder, PropertyBuilder>? entityTypeAndPropertyBuildAction = null)
{ {
ExtensionProperty = Check.NotNull(extensionProperty, nameof(extensionProperty)); ExtensionProperty = Check.NotNull(extensionProperty, nameof(extensionProperty));
@ -39,7 +37,7 @@ public class ObjectExtensionPropertyInfoEfCoreMappingOptions
public ObjectExtensionPropertyInfoEfCoreMappingOptions( public ObjectExtensionPropertyInfoEfCoreMappingOptions(
[NotNull] ObjectExtensionPropertyInfo extensionProperty, [NotNull] ObjectExtensionPropertyInfo extensionProperty,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction) Action<EntityTypeBuilder, PropertyBuilder>? entityTypeAndPropertyBuildAction)
{ {
ExtensionProperty = Check.NotNull(extensionProperty, nameof(extensionProperty)); ExtensionProperty = Check.NotNull(extensionProperty, nameof(extensionProperty));

2
framework/src/Volo.Abp.MemoryDb/Microsoft/Extensions/DependencyInjection/AbpMemoryDbServiceCollectionExtensions.cs

@ -7,7 +7,7 @@ namespace Microsoft.Extensions.DependencyInjection;
public static class AbpMemoryDbServiceCollectionExtensions public static class AbpMemoryDbServiceCollectionExtensions
{ {
public static IServiceCollection AddMemoryDbContext<TMemoryDbContext>(this IServiceCollection services, Action<IAbpMemoryDbContextRegistrationOptionsBuilder> optionsBuilder = null) public static IServiceCollection AddMemoryDbContext<TMemoryDbContext>(this IServiceCollection services, Action<IAbpMemoryDbContextRegistrationOptionsBuilder>? optionsBuilder = null)
where TMemoryDbContext : MemoryDbContext where TMemoryDbContext : MemoryDbContext
{ {
var options = new AbpMemoryDbContextRegistrationOptions(typeof(TMemoryDbContext), services); var options = new AbpMemoryDbContextRegistrationOptions(typeof(TMemoryDbContext), services);

2
framework/src/Volo.Abp.MemoryDb/Volo.Abp.MemoryDb.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.MemoryDb</AssemblyName> <AssemblyName>Volo.Abp.MemoryDb</AssemblyName>
<PackageId>Volo.Abp.MemoryDb</PackageId> <PackageId>Volo.Abp.MemoryDb</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

4
framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDatabase.cs

@ -25,9 +25,9 @@ public class MemoryDatabase : IMemoryDatabase, ITransientDependency
public IMemoryDatabaseCollection<TEntity> Collection<TEntity>() public IMemoryDatabaseCollection<TEntity> Collection<TEntity>()
where TEntity : class, IEntity where TEntity : class, IEntity
{ {
return _sets.GetOrAdd(typeof(TEntity), return (_sets.GetOrAdd(typeof(TEntity),
_ => _serviceProvider.GetRequiredService<IMemoryDatabaseCollection<TEntity>>()) as _ => _serviceProvider.GetRequiredService<IMemoryDatabaseCollection<TEntity>>()) as
IMemoryDatabaseCollection<TEntity>; IMemoryDatabaseCollection<TEntity>)!;
} }
public TKey GenerateNextId<TEntity, TKey>() public TKey GenerateNextId<TEntity, TKey>()

8
framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs

@ -192,7 +192,7 @@ public class MemoryDbRepository<TMemoryDbContext, TEntity> : RepositoryBase<TEnt
TriggerDomainEvents(entity); TriggerDomainEvents(entity);
} }
public override async Task<TEntity> FindAsync( public override async Task<TEntity?> FindAsync(
Expression<Func<TEntity, bool>> predicate, Expression<Func<TEntity, bool>> predicate,
bool includeDetails = true, bool includeDetails = true,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
@ -340,14 +340,14 @@ public class MemoryDbRepository<TMemoryDbContext, TEntity, TKey> : MemoryDbRepos
return entity; return entity;
} }
public virtual async Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default) public virtual async Task<TEntity?> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{ {
return (await GetQueryableAsync()).FirstOrDefault(e => e.Id.Equals(id)); return (await GetQueryableAsync()).FirstOrDefault(e => e.Id!.Equals(id));
} }
public virtual async Task DeleteAsync(TKey id, bool autoSave = false, CancellationToken cancellationToken = default) public virtual async Task DeleteAsync(TKey id, bool autoSave = false, CancellationToken cancellationToken = default)
{ {
await DeleteAsync(x => x.Id.Equals(id), autoSave, cancellationToken); await DeleteAsync(x => x.Id!.Equals(id), autoSave, cancellationToken);
} }
public virtual async Task DeleteManyAsync(IEnumerable<TKey> ids, bool autoSave = false, CancellationToken cancellationToken = default) public virtual async Task DeleteManyAsync(IEnumerable<TKey> ids, bool autoSave = false, CancellationToken cancellationToken = default)

2
framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/Utf8JsonMemoryDbSerializer.cs

@ -21,6 +21,6 @@ public class Utf8JsonMemoryDbSerializer : IMemoryDbSerializer, ITransientDepende
public object Deserialize(byte[] value, Type type) public object Deserialize(byte[] value, Type type)
{ {
return JsonSerializer.Deserialize(value, type, Options.JsonSerializerOptions); return JsonSerializer.Deserialize(value, type, Options.JsonSerializerOptions)!;
} }
} }

2
framework/src/Volo.Abp.MemoryDb/Volo/Abp/MemoryDb/DependencyInjection/MemoryDbRepositoryRegistrar.cs

@ -14,7 +14,7 @@ public class MemoryDbRepositoryRegistrar : RepositoryRegistrarBase<AbpMemoryDbCo
protected override IEnumerable<Type> GetEntityTypes(Type dbContextType) protected override IEnumerable<Type> GetEntityTypes(Type dbContextType)
{ {
var memoryDbContext = (MemoryDbContext)Activator.CreateInstance(dbContextType); var memoryDbContext = (MemoryDbContext)Activator.CreateInstance(dbContextType)!;
return memoryDbContext.GetEntityTypes(); return memoryDbContext.GetEntityTypes();
} }

2
framework/src/Volo.Abp.MongoDB/Microsoft/Extensions/DependencyInjection/AbpMongoDbServiceCollectionExtensions.cs

@ -10,7 +10,7 @@ namespace Microsoft.Extensions.DependencyInjection;
public static class AbpMongoDbServiceCollectionExtensions public static class AbpMongoDbServiceCollectionExtensions
{ {
public static IServiceCollection AddMongoDbContext<TMongoDbContext>(this IServiceCollection services, Action<IAbpMongoDbContextRegistrationOptionsBuilder> optionsBuilder = null) //Created overload instead of default parameter public static IServiceCollection AddMongoDbContext<TMongoDbContext>(this IServiceCollection services, Action<IAbpMongoDbContextRegistrationOptionsBuilder>? optionsBuilder = null) //Created overload instead of default parameter
where TMongoDbContext : AbpMongoDbContext where TMongoDbContext : AbpMongoDbContext
{ {
var options = new AbpMongoDbContextRegistrationOptions(typeof(TMongoDbContext), services); var options = new AbpMongoDbContextRegistrationOptions(typeof(TMongoDbContext), services);

2
framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.MongoDB</AssemblyName> <AssemblyName>Volo.Abp.MongoDB</AssemblyName>
<PackageId>Volo.Abp.MongoDB</PackageId> <PackageId>Volo.Abp.MongoDB</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

6
framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbBulkOperationProvider.cs

@ -11,7 +11,7 @@ public interface IMongoDbBulkOperationProvider
Task InsertManyAsync<TEntity>( Task InsertManyAsync<TEntity>(
IMongoDbRepository<TEntity> repository, IMongoDbRepository<TEntity> repository,
IEnumerable<TEntity> entities, IEnumerable<TEntity> entities,
IClientSessionHandle sessionHandle, IClientSessionHandle? sessionHandle,
bool autoSave, bool autoSave,
CancellationToken cancellationToken CancellationToken cancellationToken
) )
@ -20,7 +20,7 @@ public interface IMongoDbBulkOperationProvider
Task UpdateManyAsync<TEntity>( Task UpdateManyAsync<TEntity>(
IMongoDbRepository<TEntity> repository, IMongoDbRepository<TEntity> repository,
IEnumerable<TEntity> entities, IEnumerable<TEntity> entities,
IClientSessionHandle sessionHandle, IClientSessionHandle? sessionHandle,
bool autoSave, bool autoSave,
CancellationToken cancellationToken CancellationToken cancellationToken
) )
@ -29,7 +29,7 @@ public interface IMongoDbBulkOperationProvider
Task DeleteManyAsync<TEntity>( Task DeleteManyAsync<TEntity>(
IMongoDbRepository<TEntity> repository, IMongoDbRepository<TEntity> repository,
IEnumerable<TEntity> entities, IEnumerable<TEntity> entities,
IClientSessionHandle sessionHandle, IClientSessionHandle? sessionHandle,
bool autoSave, bool autoSave,
CancellationToken cancellationToken CancellationToken cancellationToken
) )

4
framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbRepository.cs

@ -23,9 +23,9 @@ public interface IMongoDbRepository<TEntity> : IRepository<TEntity>
[Obsolete("Use GetMongoQueryableAsync method.")] [Obsolete("Use GetMongoQueryableAsync method.")]
IMongoQueryable<TEntity> GetMongoQueryable(); IMongoQueryable<TEntity> GetMongoQueryable();
Task<IMongoQueryable<TEntity>> GetMongoQueryableAsync(CancellationToken cancellationToken = default, AggregateOptions options = null); Task<IMongoQueryable<TEntity>> GetMongoQueryableAsync(CancellationToken cancellationToken = default, AggregateOptions? options = null);
Task<IAggregateFluent<TEntity>> GetAggregateAsync(CancellationToken cancellationToken = default, AggregateOptions options = null); Task<IAggregateFluent<TEntity>> GetAggregateAsync(CancellationToken cancellationToken = default, AggregateOptions? options = null);
} }
public interface IMongoDbRepository<TEntity, TKey> : IMongoDbRepository<TEntity>, IRepository<TEntity, TKey> public interface IMongoDbRepository<TEntity, TKey> : IMongoDbRepository<TEntity>, IRepository<TEntity, TKey>

2
framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbRepositoryFilterer.cs

@ -17,7 +17,7 @@ public interface IMongoDbRepositoryFilterer<TEntity, TKey> : IMongoDbRepositoryF
{ {
Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TKey id, bool applyFilters = false); Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TKey id, bool applyFilters = false);
Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TEntity entity, bool withConcurrencyStamp = false, string concurrencyStamp = null); Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TEntity entity, bool withConcurrencyStamp = false, string? concurrencyStamp = null);
/// <summary> /// <summary>
/// Creates filter for given entities. /// Creates filter for given entities.

32
framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs

@ -43,9 +43,9 @@ public class MongoDbRepository<TMongoDbContext, TEntity>
} }
[Obsolete("Use GetSessionHandleAsync method.")] [Obsolete("Use GetSessionHandleAsync method.")]
protected virtual IClientSessionHandle SessionHandle => DbContext.SessionHandle; protected virtual IClientSessionHandle? SessionHandle => DbContext.SessionHandle;
protected async Task<IClientSessionHandle> GetSessionHandleAsync(CancellationToken cancellationToken = default) protected async Task<IClientSessionHandle?> GetSessionHandleAsync(CancellationToken cancellationToken = default)
{ {
return (await GetDbContextAsync(GetCancellationToken(cancellationToken))).SessionHandle; return (await GetDbContextAsync(GetCancellationToken(cancellationToken))).SessionHandle;
} }
@ -96,9 +96,9 @@ public class MongoDbRepository<TMongoDbContext, TEntity>
public IAuditPropertySetter AuditPropertySetter => LazyServiceProvider.LazyGetRequiredService<IAuditPropertySetter>(); public IAuditPropertySetter AuditPropertySetter => LazyServiceProvider.LazyGetRequiredService<IAuditPropertySetter>();
public IMongoDbBulkOperationProvider BulkOperationProvider => LazyServiceProvider.LazyGetService<IMongoDbBulkOperationProvider>(); public IMongoDbBulkOperationProvider? BulkOperationProvider => LazyServiceProvider.LazyGetService<IMongoDbBulkOperationProvider>();
public IMongoDbRepositoryFilterer<TEntity> RepositoryFilterer => LazyServiceProvider.LazyGetService<IMongoDbRepositoryFilterer<TEntity>>(); public IMongoDbRepositoryFilterer<TEntity> RepositoryFilterer => LazyServiceProvider.LazyGetService<IMongoDbRepositoryFilterer<TEntity>>()!;
public MongoDbRepository(IMongoDbContextProvider<TMongoDbContext> dbContextProvider) public MongoDbRepository(IMongoDbContextProvider<TMongoDbContext> dbContextProvider)
{ {
@ -382,7 +382,7 @@ public class MongoDbRepository<TMongoDbContext, TEntity>
if (typeof(ISoftDelete).IsAssignableFrom(typeof(TEntity)) && !IsHardDeleted(entity)) if (typeof(ISoftDelete).IsAssignableFrom(typeof(TEntity)) && !IsHardDeleted(entity))
{ {
ObjectHelper.TrySetProperty(((ISoftDelete)entity), x => x.IsDeleted, () => true); ObjectHelper.TrySetProperty(((ISoftDelete)entity), x => x.IsDeleted, () => true);
softDeletedEntities.Add(entity, SetNewConcurrencyStamp(entity)); softDeletedEntities.Add(entity, SetNewConcurrencyStamp(entity)!);
} }
else else
{ {
@ -525,7 +525,7 @@ public class MongoDbRepository<TMongoDbContext, TEntity>
return await GetMongoQueryableAsync(); return await GetMongoQueryableAsync();
} }
public async override Task<TEntity> FindAsync( public async override Task<TEntity?> FindAsync(
Expression<Func<TEntity, bool>> predicate, Expression<Func<TEntity, bool>> predicate,
bool includeDetails = true, bool includeDetails = true,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
@ -547,12 +547,12 @@ public class MongoDbRepository<TMongoDbContext, TEntity>
); );
} }
public virtual Task<IMongoQueryable<TEntity>> GetMongoQueryableAsync(CancellationToken cancellationToken = default, AggregateOptions aggregateOptions = null) public virtual Task<IMongoQueryable<TEntity>> GetMongoQueryableAsync(CancellationToken cancellationToken = default, AggregateOptions? aggregateOptions = null)
{ {
return GetMongoQueryableAsync<TEntity>(cancellationToken, aggregateOptions); return GetMongoQueryableAsync<TEntity>(cancellationToken, aggregateOptions);
} }
protected virtual async Task<IMongoQueryable<TOtherEntity>> GetMongoQueryableAsync<TOtherEntity>(CancellationToken cancellationToken = default, AggregateOptions aggregateOptions = null) protected virtual async Task<IMongoQueryable<TOtherEntity>> GetMongoQueryableAsync<TOtherEntity>(CancellationToken cancellationToken = default, AggregateOptions? aggregateOptions = null)
{ {
cancellationToken = GetCancellationToken(cancellationToken); cancellationToken = GetCancellationToken(cancellationToken);
@ -566,7 +566,7 @@ public class MongoDbRepository<TMongoDbContext, TEntity>
); );
} }
public virtual async Task<IAggregateFluent<TEntity>> GetAggregateAsync(CancellationToken cancellationToken = default, AggregateOptions aggregateOptions = null) public virtual async Task<IAggregateFluent<TEntity>> GetAggregateAsync(CancellationToken cancellationToken = default, AggregateOptions? aggregateOptions = null)
{ {
cancellationToken = GetCancellationToken(cancellationToken); cancellationToken = GetCancellationToken(cancellationToken);
@ -602,7 +602,7 @@ public class MongoDbRepository<TMongoDbContext, TEntity>
return hardDeletedEntities.Contains(entity); return hardDeletedEntities.Contains(entity);
} }
protected virtual Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TEntity entity, bool withConcurrencyStamp = false, string concurrencyStamp = null) protected virtual Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TEntity entity, bool withConcurrencyStamp = false, string? concurrencyStamp = null)
{ {
throw new NotImplementedException( throw new NotImplementedException(
$"{nameof(CreateEntityFilterAsync)} is not implemented for MongoDB by default. It should be overriden and implemented by the deriving class!" $"{nameof(CreateEntityFilterAsync)} is not implemented for MongoDB by default. It should be overriden and implemented by the deriving class!"
@ -737,7 +737,7 @@ public class MongoDbRepository<TMongoDbContext, TEntity>
/// if given entity implements <see cref="IHasConcurrencyStamp"/> interface. /// if given entity implements <see cref="IHasConcurrencyStamp"/> interface.
/// Returns the old <see cref="IHasConcurrencyStamp.ConcurrencyStamp"/> value. /// Returns the old <see cref="IHasConcurrencyStamp.ConcurrencyStamp"/> value.
/// </summary> /// </summary>
protected virtual string SetNewConcurrencyStamp(TEntity entity) protected virtual string? SetNewConcurrencyStamp(TEntity entity)
{ {
if (!(entity is IHasConcurrencyStamp concurrencyStampEntity)) if (!(entity is IHasConcurrencyStamp concurrencyStampEntity))
{ {
@ -770,7 +770,7 @@ public class MongoDbRepository<TMongoDbContext, TEntity, TKey>
where TMongoDbContext : IAbpMongoDbContext where TMongoDbContext : IAbpMongoDbContext
where TEntity : class, IEntity<TKey> where TEntity : class, IEntity<TKey>
{ {
public IMongoDbRepositoryFilterer<TEntity, TKey> RepositoryFiltererWithKey => LazyServiceProvider.LazyGetService<IMongoDbRepositoryFilterer<TEntity, TKey>>(); public IMongoDbRepositoryFilterer<TEntity, TKey> RepositoryFiltererWithKey => LazyServiceProvider.LazyGetService<IMongoDbRepositoryFilterer<TEntity, TKey>>()!;
public MongoDbRepository(IMongoDbContextProvider<TMongoDbContext> dbContextProvider) public MongoDbRepository(IMongoDbContextProvider<TMongoDbContext> dbContextProvider)
: base(dbContextProvider) : base(dbContextProvider)
@ -793,14 +793,14 @@ public class MongoDbRepository<TMongoDbContext, TEntity, TKey>
return entity; return entity;
} }
public virtual async Task<TEntity> FindAsync( public virtual async Task<TEntity?> FindAsync(
TKey id, TKey id,
bool includeDetails = true, bool includeDetails = true,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
cancellationToken = GetCancellationToken(cancellationToken); cancellationToken = GetCancellationToken(cancellationToken);
return await ApplyDataFilters(await GetMongoQueryableAsync(cancellationToken)).Where(x => x.Id.Equals(id)).FirstOrDefaultAsync(cancellationToken); return await ApplyDataFilters(await GetMongoQueryableAsync(cancellationToken)).Where(x => x.Id!.Equals(id)).FirstOrDefaultAsync(cancellationToken);
} }
public virtual Task DeleteAsync( public virtual Task DeleteAsync(
@ -808,7 +808,7 @@ public class MongoDbRepository<TMongoDbContext, TEntity, TKey>
bool autoSave = false, bool autoSave = false,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return DeleteAsync(x => x.Id.Equals(id), autoSave, cancellationToken); return DeleteAsync(x => x.Id!.Equals(id), autoSave, cancellationToken);
} }
public virtual async Task DeleteManyAsync([NotNull] IEnumerable<TKey> ids, bool autoSave = false, CancellationToken cancellationToken = default) public virtual async Task DeleteManyAsync([NotNull] IEnumerable<TKey> ids, bool autoSave = false, CancellationToken cancellationToken = default)
@ -832,7 +832,7 @@ public class MongoDbRepository<TMongoDbContext, TEntity, TKey>
return base.ApplyDataFilters<TQueryable, TOtherEntity>(query); return base.ApplyDataFilters<TQueryable, TOtherEntity>(query);
} }
protected async override Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TEntity entity, bool withConcurrencyStamp = false, string concurrencyStamp = null) protected async override Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TEntity entity, bool withConcurrencyStamp = false, string? concurrencyStamp = null)
{ {
return await RepositoryFiltererWithKey.CreateEntityFilterAsync(entity, withConcurrencyStamp, concurrencyStamp); return await RepositoryFiltererWithKey.CreateEntityFilterAsync(entity, withConcurrencyStamp, concurrencyStamp);
} }

2
framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepositoryFilterer.cs

@ -67,7 +67,7 @@ public class MongoDbRepositoryFilterer<TEntity, TKey> : MongoDbRepositoryFiltere
return Builders<TEntity>.Filter.And(filters); return Builders<TEntity>.Filter.And(filters);
} }
public virtual Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TEntity entity, bool withConcurrencyStamp = false, string concurrencyStamp = null) public virtual Task<FilterDefinition<TEntity>> CreateEntityFilterAsync(TEntity entity, bool withConcurrencyStamp = false, string? concurrencyStamp = null)
{ {
if (!withConcurrencyStamp || !(entity is IHasConcurrencyStamp entityWithConcurrencyStamp)) if (!withConcurrencyStamp || !(entity is IHasConcurrencyStamp entityWithConcurrencyStamp))
{ {

4
framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDbCoreRepositoryExtensions.cs

@ -43,13 +43,13 @@ public static class MongoDbCoreRepositoryExtensions
return repository.ToMongoDbRepository().GetMongoQueryable(); return repository.ToMongoDbRepository().GetMongoQueryable();
} }
public static Task<IMongoQueryable<TEntity>> GetMongoQueryableAsync<TEntity>(this IReadOnlyBasicRepository<TEntity> repository, CancellationToken cancellationToken = default, AggregateOptions aggregateOptions = null) public static Task<IMongoQueryable<TEntity>> GetMongoQueryableAsync<TEntity>(this IReadOnlyBasicRepository<TEntity> repository, CancellationToken cancellationToken = default, AggregateOptions? aggregateOptions = null)
where TEntity : class, IEntity where TEntity : class, IEntity
{ {
return repository.ToMongoDbRepository().GetMongoQueryableAsync(cancellationToken, aggregateOptions); return repository.ToMongoDbRepository().GetMongoQueryableAsync(cancellationToken, aggregateOptions);
} }
public static Task<IAggregateFluent<TEntity>> GetAggregateAsync<TEntity>(this IReadOnlyBasicRepository<TEntity> repository, CancellationToken cancellationToken = default, AggregateOptions aggregateOptions = null) public static Task<IAggregateFluent<TEntity>> GetAggregateAsync<TEntity>(this IReadOnlyBasicRepository<TEntity> repository, CancellationToken cancellationToken = default, AggregateOptions? aggregateOptions = null)
where TEntity : class, IEntity where TEntity : class, IEntity
{ {
return repository.ToMongoDbRepository().GetAggregateAsync(cancellationToken, aggregateOptions); return repository.ToMongoDbRepository().GetAggregateAsync(cancellationToken, aggregateOptions);

12
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs

@ -6,22 +6,22 @@ namespace Volo.Abp.MongoDB;
public abstract class AbpMongoDbContext : IAbpMongoDbContext, ITransientDependency public abstract class AbpMongoDbContext : IAbpMongoDbContext, ITransientDependency
{ {
public IAbpLazyServiceProvider LazyServiceProvider { get; set; } public IAbpLazyServiceProvider LazyServiceProvider { get; set; } = default!;
public IMongoModelSource ModelSource { get; set; } public IMongoModelSource ModelSource { get; set; } = default!;
public IMongoClient Client { get; private set; } public IMongoClient Client { get; private set; } = default!;
public IMongoDatabase Database { get; private set; } public IMongoDatabase Database { get; private set; } = default!;
public IClientSessionHandle SessionHandle { get; private set; } public IClientSessionHandle? SessionHandle { get; private set; }
protected internal virtual void CreateModel(IMongoModelBuilder modelBuilder) protected internal virtual void CreateModel(IMongoModelBuilder modelBuilder)
{ {
} }
public virtual void InitializeDatabase(IMongoDatabase database, IMongoClient client, IClientSessionHandle sessionHandle) public virtual void InitializeDatabase(IMongoDatabase database, IMongoClient client, IClientSessionHandle? sessionHandle)
{ {
Database = database; Database = database;
Client = client; Client = client;

2
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContextOptions.cs

@ -12,7 +12,7 @@ public class AbpMongoDbContextOptions
{ {
internal Dictionary<MultiTenantDbContextType, Type> DbContextReplacements { get; } internal Dictionary<MultiTenantDbContextType, Type> DbContextReplacements { get; }
public Action<MongoClientSettings> MongoClientSettingsConfigurer { get; set; } public Action<MongoClientSettings>? MongoClientSettingsConfigurer { get; set; }
public AbpMongoDbContextOptions() public AbpMongoDbContextOptions()
{ {

3
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoModelBuilderConfigurationOptions.cs

@ -12,7 +12,8 @@ public class AbpMongoModelBuilderConfigurationOptions
_collectionPrefix = value; _collectionPrefix = value;
} }
} }
private string _collectionPrefix;
private string _collectionPrefix = default!;
public AbpMongoModelBuilderConfigurationOptions([NotNull] string collectionPrefix = "") public AbpMongoModelBuilderConfigurationOptions([NotNull] string collectionPrefix = "")
{ {

6
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DistributedEvents/IncomingEventRecord.cs

@ -15,11 +15,11 @@ public class IncomingEventRecord :
public ExtraPropertyDictionary ExtraProperties { get; private set; } public ExtraPropertyDictionary ExtraProperties { get; private set; }
public string MessageId { get; private set; } public string MessageId { get; private set; } = default!;
public string EventName { get; private set; } public string EventName { get; private set; } = default!;
public byte[] EventData { get; private set; } public byte[] EventData { get; private set; } = default!;
public DateTime CreationTime { get; private set; } public DateTime CreationTime { get; private set; }

4
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DistributedEvents/OutgoingEventRecord.cs

@ -15,9 +15,9 @@ public class OutgoingEventRecord :
public ExtraPropertyDictionary ExtraProperties { get; private set; } public ExtraPropertyDictionary ExtraProperties { get; private set; }
public string EventName { get; private set; } public string EventName { get; private set; } = default!;
public byte[] EventData { get; private set; } public byte[] EventData { get; private set; } = default!;
public DateTime CreationTime { get; private set; } public DateTime CreationTime { get; private set; }

2
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs

@ -10,5 +10,5 @@ public interface IAbpMongoDbContext
IMongoCollection<T> Collection<T>(); IMongoCollection<T> Collection<T>();
IClientSessionHandle SessionHandle { get; } IClientSessionHandle? SessionHandle { get; }
} }

4
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IMongoModelBuilder.cs

@ -6,9 +6,9 @@ namespace Volo.Abp.MongoDB;
public interface IMongoModelBuilder public interface IMongoModelBuilder
{ {
void Entity<TEntity>(Action<IMongoEntityModelBuilder<TEntity>> buildAction = null); void Entity<TEntity>(Action<IMongoEntityModelBuilder<TEntity>>? buildAction = null);
void Entity([NotNull] Type entityType, Action<IMongoEntityModelBuilder> buildAction = null); void Entity([NotNull] Type entityType, Action<IMongoEntityModelBuilder>? buildAction = null);
IReadOnlyList<IMongoEntityModel> GetEntities(); IReadOnlyList<IMongoEntityModel> GetEntities();
} }

2
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoCollectionAttribute.cs

@ -4,7 +4,7 @@ namespace Volo.Abp.MongoDB;
public class MongoCollectionAttribute : Attribute public class MongoCollectionAttribute : Attribute
{ {
public string CollectionName { get; set; } public string? CollectionName { get; set; }
public MongoCollectionAttribute() public MongoCollectionAttribute()
{ {

24
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs

@ -74,15 +74,15 @@ public class MongoDbAsyncQueryableProvider : IAsyncQueryableProvider, ISingleton
return GetMongoQueryable(queryable).FirstAsync(predicate, cancellationToken); return GetMongoQueryable(queryable).FirstAsync(predicate, cancellationToken);
} }
public Task<T> FirstOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T?> FirstOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)
{ {
return GetMongoQueryable(queryable).FirstOrDefaultAsync(cancellationToken); return GetMongoQueryable(queryable).FirstOrDefaultAsync(cancellationToken)!;
} }
public Task<T> FirstOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate, public Task<T?> FirstOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return GetMongoQueryable(queryable).FirstOrDefaultAsync(predicate, cancellationToken); return GetMongoQueryable(queryable).FirstOrDefaultAsync(predicate, cancellationToken)!;
} }
public Task<T> LastAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T> LastAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)
@ -95,15 +95,15 @@ public class MongoDbAsyncQueryableProvider : IAsyncQueryableProvider, ISingleton
return Task.FromResult(GetMongoQueryable(queryable).Last(predicate)); return Task.FromResult(GetMongoQueryable(queryable).Last(predicate));
} }
public Task<T> LastOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T?> LastOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)
{ {
return Task.FromResult(GetMongoQueryable(queryable).LastOrDefault()); return Task.FromResult<T?>(GetMongoQueryable(queryable).LastOrDefault());
} }
public Task<T> LastOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate, public Task<T?> LastOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return Task.FromResult(GetMongoQueryable(queryable).LastOrDefault(predicate)); return Task.FromResult<T?>(GetMongoQueryable(queryable).LastOrDefault(predicate));
} }
public Task<T> SingleAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T> SingleAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)
@ -116,15 +116,15 @@ public class MongoDbAsyncQueryableProvider : IAsyncQueryableProvider, ISingleton
return GetMongoQueryable(queryable).SingleAsync(predicate, cancellationToken); return GetMongoQueryable(queryable).SingleAsync(predicate, cancellationToken);
} }
public Task<T> SingleOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T?> SingleOrDefaultAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)
{ {
return GetMongoQueryable(queryable).SingleOrDefaultAsync(cancellationToken); return GetMongoQueryable(queryable).SingleOrDefaultAsync(cancellationToken)!;
} }
public Task<T> SingleOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate, public Task<T?> SingleOrDefaultAsync<T>(IQueryable<T> queryable, Expression<Func<T, bool>> predicate,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return GetMongoQueryable(queryable).SingleOrDefaultAsync(predicate, cancellationToken); return GetMongoQueryable(queryable).SingleOrDefaultAsync(predicate, cancellationToken)!;
} }
public Task<T> MinAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default) public Task<T> MinAsync<T>(IQueryable<T> queryable, CancellationToken cancellationToken = default)

2
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoEntityModelBuilder.cs

@ -11,7 +11,7 @@ public class MongoEntityModelBuilder<TEntity> :
{ {
public Type EntityType { get; } public Type EntityType { get; }
public string CollectionName { get; set; } public string CollectionName { get; set; } = default!;
BsonClassMap IMongoEntityModelBuilder.BsonMap => _bsonClassMap; BsonClassMap IMongoEntityModelBuilder.BsonMap => _bsonClassMap;
BsonClassMap<TEntity> IMongoEntityModelBuilder<TEntity>.BsonMap => _bsonClassMap; BsonClassMap<TEntity> IMongoEntityModelBuilder<TEntity>.BsonMap => _bsonClassMap;

6
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs

@ -121,7 +121,7 @@ public class MongoModelBuilder : IMongoModelBuilder
return dbContext.LazyServiceProvider.LazyGetRequiredService<IOptions<AbpClockOptions>>().Value.Kind; return dbContext.LazyServiceProvider.LazyGetRequiredService<IOptions<AbpClockOptions>>().Value.Kind;
} }
public virtual void Entity<TEntity>(Action<IMongoEntityModelBuilder<TEntity>> buildAction = null) public virtual void Entity<TEntity>(Action<IMongoEntityModelBuilder<TEntity>>? buildAction = null)
{ {
var model = (IMongoEntityModelBuilder<TEntity>)_entityModelBuilders.GetOrAdd( var model = (IMongoEntityModelBuilder<TEntity>)_entityModelBuilders.GetOrAdd(
typeof(TEntity), typeof(TEntity),
@ -131,7 +131,7 @@ public class MongoModelBuilder : IMongoModelBuilder
buildAction?.Invoke(model); buildAction?.Invoke(model);
} }
public virtual void Entity(Type entityType, Action<IMongoEntityModelBuilder> buildAction = null) public virtual void Entity(Type entityType, Action<IMongoEntityModelBuilder>? buildAction = null)
{ {
Check.NotNull(entityType, nameof(entityType)); Check.NotNull(entityType, nameof(entityType));
@ -139,7 +139,7 @@ public class MongoModelBuilder : IMongoModelBuilder
entityType, entityType,
() => (IMongoEntityModelBuilder)Activator.CreateInstance( () => (IMongoEntityModelBuilder)Activator.CreateInstance(
typeof(MongoEntityModelBuilder<>).MakeGenericType(entityType) typeof(MongoEntityModelBuilder<>).MakeGenericType(entityType)
) )!
); );
buildAction?.Invoke(model); buildAction?.Invoke(model);

2
framework/src/Volo.Abp.Uow/Volo/Abp/Uow/ChildUnitOfWork.cs

@ -10,7 +10,7 @@ internal class ChildUnitOfWork : IUnitOfWork
{ {
public Guid Id => _parent.Id; public Guid Id => _parent.Id;
public IAbpUnitOfWorkOptions? Options => _parent.Options; public IAbpUnitOfWorkOptions Options => _parent.Options;
public IUnitOfWork? Outer => _parent.Outer; public IUnitOfWork? Outer => _parent.Outer;

2
framework/src/Volo.Abp.Uow/Volo/Abp/Uow/IUnitOfWork.cs

@ -17,7 +17,7 @@ public interface IUnitOfWork : IDatabaseApiContainer, ITransactionApiContainer,
event EventHandler<UnitOfWorkEventArgs> Disposed; event EventHandler<UnitOfWorkEventArgs> Disposed;
IAbpUnitOfWorkOptions? Options { get; } IAbpUnitOfWorkOptions Options { get; }
IUnitOfWork? Outer { get; } IUnitOfWork? Outer { get; }

2
framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs

@ -21,7 +21,7 @@ public class UnitOfWork : IUnitOfWork, ITransientDependency
public Guid Id { get; } = Guid.NewGuid(); public Guid Id { get; } = Guid.NewGuid();
public IAbpUnitOfWorkOptions? Options { get; private set; } public IAbpUnitOfWorkOptions Options { get; private set; } = default!;
public IUnitOfWork? Outer { get; private set; } public IUnitOfWork? Outer { get; private set; }

Loading…
Cancel
Save