diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache
index d94e1e6bb193075ae69bd489da39b27f01031803..b9f38b815bb3fec6d6550e9cf34503d4faffe7f6 100644
--- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache
+++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache
@@ -86,6 +86,8 @@ namespace {{packageName}}
             services
                 .AddSwaggerGen(c =>
                 {
+                    c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
+                    
                     c.SwaggerDoc("{{{version}}}{{^version}}v1{{/version}}", new OpenApiInfo
                     {
                         Title = "{{{appName}}}{{^appName}}{{packageName}}{{/appName}}",
diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache
index 4cc9017e0603f6501d44d668674dbff114410180..e29be395d7f4dda94159be4e802c72d4843bcc8c 100644
--- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache
+++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache
@@ -11,6 +11,7 @@ using Newtonsoft.Json;
 {{#model}}
 {{#discriminator}}
 using JsonSubTypes;
+using Swashbuckle.AspNetCore.Annotations;
 {{/discriminator}}
 {{/model}}
 {{/models}}
@@ -26,8 +27,10 @@ namespace {{modelPackage}}
     [DataContract]
     {{#discriminator}}
     [JsonConverter(typeof(JsonSubtypes), "{{{discriminatorName}}}")]
+    [SwaggerDiscriminator("{{{discriminatorName}}}")]
     {{#mappedModels}}
     [JsonSubtypes.KnownSubType(typeof({{{modelName}}}), "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")]
+    [SwaggerSubType(typeof({{{modelName}}}), DiscriminatorValue =  "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")]
     {{/mappedModels}}
     {{/discriminator}}
     public {{#modelClassModifier}}{{.}} {{/modelClassModifier}}class {{classname}} : {{#parent}}{{{.}}}, {{/parent}}IEquatable<{{classname}}>
diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs
index 70a6b10f0580b4903b6e8ef91ab4deefe432708c..ce27cdffd9a8447a86e723604a35d8bc6023ac01 100644
--- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs
+++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs
@@ -80,6 +80,8 @@ namespace Org.OpenAPITools
             services
                 .AddSwaggerGen(c =>
                 {
+                    c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
+                    
                     c.SwaggerDoc("1.0.0", new OpenApiInfo
                     {
                         Title = "OpenAPI Petstore",
diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs
index d3f0be5bc6774b8b5011477154db2ecc1e771d06..0b156ec4342802e3afc30ddf2f695479a9cadc89 100644
--- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs
+++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs
@@ -80,6 +80,8 @@ namespace Org.OpenAPITools
             services
                 .AddSwaggerGen(c =>
                 {
+                    c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
+                    
                     c.SwaggerDoc("1.0.0", new OpenApiInfo
                     {
                         Title = "OpenAPI Petstore",
diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs
index 20cb5b5a94947f09c755fe7f2fe23d8194391245..014f5ef7a173a0b127220d72a30280ad3d1d6b82 100644
--- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs
+++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs
@@ -80,6 +80,8 @@ namespace Org.OpenAPITools
             services
                 .AddSwaggerGen(c =>
                 {
+                    c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
+                    
                     c.SwaggerDoc("1.0.0", new OpenApiInfo
                     {
                         Title = "OpenAPI Petstore",
diff --git a/samples/server/petstore/aspnetcore-6.0/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-6.0/src/Org.OpenAPITools/Startup.cs
index 5699f0151674b3107179360e68a4c429cee5a474..aee0229fa2e13a8544981808835aacdd7edf6d83 100644
--- a/samples/server/petstore/aspnetcore-6.0/src/Org.OpenAPITools/Startup.cs
+++ b/samples/server/petstore/aspnetcore-6.0/src/Org.OpenAPITools/Startup.cs
@@ -80,6 +80,8 @@ namespace Org.OpenAPITools
             services
                 .AddSwaggerGen(c =>
                 {
+                    c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
+                    
                     c.SwaggerDoc("1.0.0", new OpenApiInfo
                     {
                         Title = "OpenAPI Petstore",