@@ -547,6 +547,16 @@ private class EntityWithNullableEnumType
547547 public Days ? Day { get ; set ; }
548548 }
549549
550+ private class BaseEntityWithIntDiscriminator
551+ {
552+ public int Id { get ; set ; }
553+ }
554+
555+ private class DerivedEntityWithIntDiscriminator : BaseEntityWithIntDiscriminator
556+ {
557+ public string Name { get ; set ; }
558+ }
559+
550560 private class ManyToManyLeft
551561 {
552562 public int Id { get ; set ; }
@@ -2022,7 +2032,7 @@ public virtual void CheckConstraint_is_only_stored_in_snapshot_once_for_TPH()
20222032
20232033 b.ToTable("BaseEntity", "DefaultSchema");
20242034
2025- b.HasDiscriminator( ).HasValue("BaseEntity");
2035+ b.HasDiscriminator<string>("Discriminator" ).HasValue("BaseEntity");
20262036
20272037 b.UseTphMappingStrategy();
20282038 });
@@ -2354,7 +2364,7 @@ public virtual void BaseType_is_stored_in_snapshot()
23542364
23552365 b.ToTable("BaseEntity", "DefaultSchema");
23562366
2357- b.HasDiscriminator( ).HasValue("BaseEntity");
2367+ b.HasDiscriminator<string>("Discriminator" ).HasValue("BaseEntity");
23582368
23592369 b.UseTphMappingStrategy();
23602370 });
@@ -2425,7 +2435,7 @@ public virtual void Discriminator_annotations_are_stored_in_snapshot()
24252435
24262436 b.ToTable("BaseEntity", "DefaultSchema");
24272437
2428- b.HasDiscriminator( ).IsComplete(true).HasValue("BaseEntity");
2438+ b.HasDiscriminator<string>("Discriminator" ).IsComplete(true).HasValue("BaseEntity");
24292439
24302440 b.UseTphMappingStrategy();
24312441 });
@@ -2500,7 +2510,7 @@ public virtual void Converted_discriminator_annotations_are_stored_in_snapshot()
25002510
25012511 b.ToTable("BaseEntityWithStructDiscriminator", "DefaultSchema");
25022512
2503- b.HasDiscriminator( ).IsComplete(true).HasValue("Base");
2513+ b.HasDiscriminator<string>("Discriminator" ).IsComplete(true).HasValue("Base");
25042514
25052515 b.UseTphMappingStrategy();
25062516 });
@@ -3375,6 +3385,57 @@ public virtual void Discriminator_of_enum_to_string()
33753385 Assert . False ( discriminatorProperty . IsNullable ) ;
33763386 } ) ;
33773387
3388+ [ ConditionalFact ]
3389+ public virtual void Discriminator_with_non_string_default_name_is_stored_in_snapshot ( )
3390+ => Test (
3391+ builder =>
3392+ {
3393+ builder . Entity < DerivedEntityWithIntDiscriminator > ( ) . HasBaseType < BaseEntityWithIntDiscriminator > ( ) ;
3394+ builder . Entity < BaseEntityWithIntDiscriminator > ( )
3395+ . HasDiscriminator < int > ( "Discriminator" )
3396+ . HasValue < BaseEntityWithIntDiscriminator > ( 0 )
3397+ . HasValue < DerivedEntityWithIntDiscriminator > ( 1 ) ;
3398+ } ,
3399+ AddBoilerPlate (
3400+ GetHeading ( )
3401+ + """
3402+ modelBuilder.Entity("Microsoft.EntityFrameworkCore.Migrations.Design.CSharpMigrationsGeneratorTest+BaseEntityWithIntDiscriminator", b =>
3403+ {
3404+ b.Property<int>("Id")
3405+ .ValueGeneratedOnAdd()
3406+ .HasColumnType("int");
3407+
3408+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
3409+
3410+ b.Property<int>("Discriminator")
3411+ .HasColumnType("int");
3412+
3413+ b.HasKey("Id");
3414+
3415+ b.ToTable("BaseEntityWithIntDiscriminator", "DefaultSchema");
3416+
3417+ b.HasDiscriminator<int>("Discriminator").HasValue(0);
3418+
3419+ b.UseTphMappingStrategy();
3420+ });
3421+
3422+ modelBuilder.Entity("Microsoft.EntityFrameworkCore.Migrations.Design.CSharpMigrationsGeneratorTest+DerivedEntityWithIntDiscriminator", b =>
3423+ {
3424+ b.HasBaseType("Microsoft.EntityFrameworkCore.Migrations.Design.CSharpMigrationsGeneratorTest+BaseEntityWithIntDiscriminator");
3425+
3426+ b.Property<string>("Name")
3427+ .HasColumnType("nvarchar(max)");
3428+
3429+ b.HasDiscriminator().HasValue(1);
3430+ });
3431+ """ ) ,
3432+ model =>
3433+ {
3434+ var discriminatorProperty = model . GetEntityTypes ( ) . First ( ) . FindDiscriminatorProperty ( ) ;
3435+ Assert . Equal ( typeof ( int ) , discriminatorProperty . ClrType ) ;
3436+ Assert . Equal ( "Discriminator" , discriminatorProperty . Name ) ;
3437+ } ) ;
3438+
33783439 [ ConditionalFact ]
33793440 public virtual void Temporal_table_information_is_stored_in_snapshot ( )
33803441 => Test (
@@ -4939,7 +5000,7 @@ public virtual void Property_column_name_is_stored_in_snapshot_when_DefaultColum
49395000
49405001 b.ToTable("BarBase", "DefaultSchema");
49415002
4942- b.HasDiscriminator( ).HasValue("BarBase");
5003+ b.HasDiscriminator<string>("Discriminator" ).HasValue("BarBase");
49435004
49445005 b.UseTphMappingStrategy();
49455006 });
@@ -5155,7 +5216,7 @@ public virtual void Property_column_name_on_specific_table_is_stored_in_snapshot
51555216
51565217 b.ToTable("BaseEntity", "DefaultSchema");
51575218
5158- b.HasDiscriminator( ).HasValue("BaseEntity");
5219+ b.HasDiscriminator<string>("Discriminator" ).HasValue("BaseEntity");
51595220
51605221 b.UseTphMappingStrategy();
51615222 });
@@ -7718,7 +7779,7 @@ public virtual void Do_not_generate_entity_type_builder_again_if_no_foreign_key_
77187779
77197780 b.ToTable("BaseType", "DefaultSchema");
77207781
7721- b.HasDiscriminator( ).HasValue("BaseType");
7782+ b.HasDiscriminator<string>("Discriminator" ).HasValue("BaseType");
77227783
77237784 b.UseTphMappingStrategy();
77247785 });
0 commit comments