diff --git a/docs/en/Exception-Handling.md b/docs/en/Exception-Handling.md
index 04cc6fc695..8c84157878 100644
--- a/docs/en/Exception-Handling.md
+++ b/docs/en/Exception-Handling.md
@@ -1,11 +1,11 @@
# Exception Handling
-ABP provides a built-in infrastructure and offers a standard model for handling exceptions in a web application.
+ABP provides a built-in infrastructure and offers a standard model for handling exceptions.
* Automatically **handles all exceptions** and sends a standard **formatted error message** to the client for an API/AJAX request.
* Automatically hides **internal infrastructure errors** and returns a standard error message.
-* Provides a configurable way to **localize** exception messages.
-* Automatically maps standard exceptions to **HTTP status codes** and provides a configurable option to map these to custom exceptions.
+* Provides an easy and configurable way to **localize** exception messages.
+* Automatically maps standard exceptions to **HTTP status codes** and provides a configurable option to map custom exceptions.
## Automatic Exception Handling
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Microsoft/EntityFrameworkCore/AbpOracleModelBuilderExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Microsoft/EntityFrameworkCore/AbpOracleModelBuilderExtensions.cs
index 23943873c3..eaf6d94a83 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Microsoft/EntityFrameworkCore/AbpOracleModelBuilderExtensions.cs
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Microsoft/EntityFrameworkCore/AbpOracleModelBuilderExtensions.cs
@@ -1,13 +1,13 @@
-// using Volo.Abp.EntityFrameworkCore;
-//
-// namespace Microsoft.EntityFrameworkCore
-// {
-// public static class AbpOracleModelBuilderExtensions
-// {
-// public static void UseOracle(
-// this ModelBuilder modelBuilder)
-// {
-// modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.Oracle);
-// }
-// }
-// }
+using Volo.Abp.EntityFrameworkCore;
+
+namespace Microsoft.EntityFrameworkCore
+{
+ public static class AbpOracleModelBuilderExtensions
+ {
+ public static void UseOracle(
+ this ModelBuilder modelBuilder)
+ {
+ modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.Oracle);
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj
index f42981a9ae..3d4e83e2ad 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextOracleDevartExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextOracleDevartExtensions.cs
index eaaed380af..43c4c178ee 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextOracleDevartExtensions.cs
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextConfigurationContextOracleDevartExtensions.cs
@@ -1,27 +1,34 @@
-// using JetBrains.Annotations;
-// using Microsoft.EntityFrameworkCore;
-// using System;
-// using Devart.Data.Oracle.Entity;
-// using Volo.Abp.EntityFrameworkCore.DependencyInjection;
-//
-// namespace Volo.Abp.EntityFrameworkCore
-// {
-// public static class AbpDbContextConfigurationContextOracleDevartExtensions
-// {
-// public static DbContextOptionsBuilder UseOracle(
-// [NotNull] this AbpDbContextConfigurationContext context,
-// [CanBeNull] Action oracleOptionsAction = null,
-// bool useExistingConnectionIfAvailable = false)
-// {
-// TODO: UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery);
-// if (useExistingConnectionIfAvailable && context.ExistingConnection != null)
-// {
-// return context.DbContextOptions.UseOracle(context.ExistingConnection, oracleOptionsAction);
-// }
-// else
-// {
-// return context.DbContextOptions.UseOracle(context.ConnectionString, oracleOptionsAction);
-// }
-// }
-// }
-// }
+using JetBrains.Annotations;
+using Microsoft.EntityFrameworkCore;
+using System;
+using Devart.Data.Oracle.Entity;
+using Volo.Abp.EntityFrameworkCore.DependencyInjection;
+
+namespace Volo.Abp.EntityFrameworkCore
+{
+ public static class AbpDbContextConfigurationContextOracleDevartExtensions
+ {
+ public static DbContextOptionsBuilder UseOracle(
+ [NotNull] this AbpDbContextConfigurationContext context,
+ [CanBeNull] Action oracleOptionsAction = null,
+ bool useExistingConnectionIfAvailable = false)
+ {
+ if (useExistingConnectionIfAvailable && context.ExistingConnection != null)
+ {
+ return context.DbContextOptions.UseOracle(context.ExistingConnection, optionsBuilder =>
+ {
+ optionsBuilder.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery);
+ oracleOptionsAction?.Invoke(optionsBuilder);
+ });
+ }
+ else
+ {
+ return context.DbContextOptions.UseOracle(context.ConnectionString, optionsBuilder =>
+ {
+ optionsBuilder.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery);
+ oracleOptionsAction?.Invoke(optionsBuilder);
+ });
+ }
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsOracleDevartExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsOracleDevartExtensions.cs
index 99cfc84b8e..20887ceb79 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsOracleDevartExtensions.cs
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/AbpDbContextOptionsOracleDevartExtensions.cs
@@ -1,32 +1,32 @@
-// using JetBrains.Annotations;
-// using System;
-// using Devart.Data.Oracle.Entity;
-//
-// namespace Volo.Abp.EntityFrameworkCore
-// {
-// public static class AbpDbContextOptionsOracleDevartExtensions
-// {
-// public static void UseOracle(
-// [NotNull] this AbpDbContextOptions options,
-// [CanBeNull] Action oracleOptionsAction = null,
-// bool useExistingConnectionIfAvailable = false)
-// {
-// options.Configure(context =>
-// {
-// context.UseOracle(oracleOptionsAction, useExistingConnectionIfAvailable);
-// });
-// }
-//
-// public static void UseOracle(
-// [NotNull] this AbpDbContextOptions options,
-// [CanBeNull] Action oracleOptionsAction = null,
-// bool useExistingConnectionIfAvailable = false)
-// where TDbContext : AbpDbContext
-// {
-// options.Configure(context =>
-// {
-// context.UseOracle(oracleOptionsAction, useExistingConnectionIfAvailable);
-// });
-// }
-// }
-// }
+using JetBrains.Annotations;
+using System;
+using Devart.Data.Oracle.Entity;
+
+namespace Volo.Abp.EntityFrameworkCore
+{
+ public static class AbpDbContextOptionsOracleDevartExtensions
+ {
+ public static void UseOracle(
+ [NotNull] this AbpDbContextOptions options,
+ [CanBeNull] Action oracleOptionsAction = null,
+ bool useExistingConnectionIfAvailable = false)
+ {
+ options.Configure(context =>
+ {
+ context.UseOracle(oracleOptionsAction, useExistingConnectionIfAvailable);
+ });
+ }
+
+ public static void UseOracle(
+ [NotNull] this AbpDbContextOptions options,
+ [CanBeNull] Action oracleOptionsAction = null,
+ bool useExistingConnectionIfAvailable = false)
+ where TDbContext : AbpDbContext
+ {
+ options.Configure(context =>
+ {
+ context.UseOracle(oracleOptionsAction, useExistingConnectionIfAvailable);
+ });
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/Oracle/Devart/AbpEntityFrameworkCoreOracleDevartModule.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/Oracle/Devart/AbpEntityFrameworkCoreOracleDevartModule.cs
index 3b1b9cc337..9580219cfc 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/Oracle/Devart/AbpEntityFrameworkCoreOracleDevartModule.cs
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/Oracle/Devart/AbpEntityFrameworkCoreOracleDevartModule.cs
@@ -1,22 +1,22 @@
-// using Volo.Abp.Guids;
-// using Volo.Abp.Modularity;
-//
-// namespace Volo.Abp.EntityFrameworkCore.Oracle.Devart
-// {
-// [DependsOn(
-// typeof(AbpEntityFrameworkCoreModule)
-// )]
-// public class AbpEntityFrameworkCoreOracleDevartModule : AbpModule
-// {
-// public override void ConfigureServices(ServiceConfigurationContext context)
-// {
-// Configure(options =>
-// {
-// if (options.DefaultSequentialGuidType == null)
-// {
-// options.DefaultSequentialGuidType = SequentialGuidType.SequentialAsBinary;
-// }
-// });
-// }
-// }
-// }
+using Volo.Abp.Guids;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.EntityFrameworkCore.Oracle.Devart
+{
+ [DependsOn(
+ typeof(AbpEntityFrameworkCoreModule)
+ )]
+ public class AbpEntityFrameworkCoreOracleDevartModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ if (options.DefaultSequentialGuidType == null)
+ {
+ options.DefaultSequentialGuidType = SequentialGuidType.SequentialAsBinary;
+ }
+ });
+ }
+ }
+}
diff --git a/npm/ng-packs/packages/schematics/src/enums/exception.ts b/npm/ng-packs/packages/schematics/src/enums/exception.ts
index b267ad6674..b7b206cbf6 100644
--- a/npm/ng-packs/packages/schematics/src/enums/exception.ts
+++ b/npm/ng-packs/packages/schematics/src/enums/exception.ts
@@ -5,7 +5,7 @@ export const enum Exception {
InvalidModule = '[Invalid Module] Backend module "{0}" does not exist in API definition.',
InvalidApiDefinition = '[Invalid API Definition] The provided API definition is invalid.',
InvalidWorkspace = '[Invalid Workspace] The angular.json should be a valid JSON file.',
- NoApi = '[API Not Available] Please double-check the URL in the source project environment and make sure your application is up and running.',
+ NoApi = '[API Not Available] Request to {0} is unsuccessful. Please double-check the URL in the source project environment and make sure your application is up and running.',
NoProject = '[Project Not Found] Either define a default project in your workspace or specify the project name in schematics options.',
NoProxyConfig = '[Proxy Config Not Found] There is no JSON file at "{0}".',
NoTypeDefinition = '[Type Definition Not Found] There is no type definition for "{0}".',
diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts
index e1e965744f..a5f0dd1232 100644
--- a/npm/ng-packs/packages/schematics/src/utils/source.ts
+++ b/npm/ng-packs/packages/schematics/src/utils/source.ts
@@ -36,7 +36,7 @@ async function getApiDefinition(sourceUrl: string) {
} catch ({ response }) {
// handle redirects
if (!response?.body || response.statusCode >= 400)
- throw new SchematicsException(Exception.NoApi);
+ throw new SchematicsException(interpolate(Exception.NoApi, url));
body = response.body;
}
diff --git a/npm/ng-packs/packages/schematics/src/utils/tree.ts b/npm/ng-packs/packages/schematics/src/utils/tree.ts
index d142032255..5fd8414f0c 100644
--- a/npm/ng-packs/packages/schematics/src/utils/tree.ts
+++ b/npm/ng-packs/packages/schematics/src/utils/tree.ts
@@ -21,7 +21,7 @@ export class TypeNode {
if (!self) return '';
- const representation = self + this.children.filter(String || Boolean).join(', ');
+ const representation = self + this.children.filter(String).join(', ');
if (!this.parent) return representation;
diff --git a/nupkg/common.ps1 b/nupkg/common.ps1
index 98effbe598..29249ef3f4 100644
--- a/nupkg/common.ps1
+++ b/nupkg/common.ps1
@@ -87,7 +87,7 @@ $projects = (
"framework/src/Volo.Abp.EntityFrameworkCore",
"framework/src/Volo.Abp.EntityFrameworkCore.MySQL",
# "framework/src/Volo.Abp.EntityFrameworkCore.Oracle",
- # "framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart",
+ "framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart",
"framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql",
"framework/src/Volo.Abp.EntityFrameworkCore.Sqlite",
"framework/src/Volo.Abp.EntityFrameworkCore.SqlServer",