@@ -999,6 +999,105 @@ protected override void BuildModel(ModelBuilder modelBuilder)
999999 Assert . Null ( humanPetType . GetViewName ( ) ) ;
10001000 } ) ;
10011001
1002+ [ ConditionalFact ] // Issue #33605
1003+ public virtual void Abstract_base_class_with_TPT ( )
1004+ => Test (
1005+ builder =>
1006+ {
1007+ builder . Entity < Cat > ( ) . ToTable ( "Cats" ) ;
1008+ builder . Entity < Dog > ( ) . ToTable ( "Dogs" ) ;
1009+ builder . Entity < Animal > ( ) ;
1010+ builder . Ignore < Human > ( ) ;
1011+ builder . Ignore < Pet > ( ) ;
1012+ builder . Ignore < Animal > ( ) ;
1013+ } ,
1014+ """
1015+ // <auto-generated />
1016+ using Microsoft.EntityFrameworkCore;
1017+ using Microsoft.EntityFrameworkCore.Infrastructure;
1018+ using Microsoft.EntityFrameworkCore.Metadata;
1019+ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
1020+
1021+ #nullable disable
1022+
1023+ namespace RootNamespace
1024+ {
1025+ [DbContext(typeof(DbContext))]
1026+ partial class Snapshot : ModelSnapshot
1027+ {
1028+ protected override void BuildModel(ModelBuilder modelBuilder)
1029+ {
1030+ #pragma warning disable 612, 618
1031+ modelBuilder
1032+ .HasDefaultSchema("DefaultSchema")
1033+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
1034+
1035+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
1036+
1037+ modelBuilder.Entity("Microsoft.EntityFrameworkCore.Migrations.ModelSnapshotSqlServerTest+Cat", b =>
1038+ {
1039+ b.Property<int>("Id")
1040+ .ValueGeneratedOnAdd()
1041+ .HasColumnType("int");
1042+
1043+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
1044+
1045+ b.Property<string>("EducationLevel")
1046+ .HasColumnType("nvarchar(max)");
1047+
1048+ b.Property<string>("Name")
1049+ .HasColumnType("nvarchar(max)");
1050+
1051+ b.Property<string>("Vet")
1052+ .HasColumnType("nvarchar(max)");
1053+
1054+ b.HasKey("Id");
1055+
1056+ b.ToTable("Cats", "DefaultSchema");
1057+ });
1058+
1059+ modelBuilder.Entity("Microsoft.EntityFrameworkCore.Migrations.ModelSnapshotSqlServerTest+Dog", b =>
1060+ {
1061+ b.Property<int>("Id")
1062+ .ValueGeneratedOnAdd()
1063+ .HasColumnType("int");
1064+
1065+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
1066+
1067+ b.Property<string>("FavoriteToy")
1068+ .HasColumnType("nvarchar(max)");
1069+
1070+ b.Property<string>("Name")
1071+ .HasColumnType("nvarchar(max)");
1072+
1073+ b.Property<string>("Vet")
1074+ .HasColumnType("nvarchar(max)");
1075+
1076+ b.HasKey("Id");
1077+
1078+ b.ToTable("Dogs", "DefaultSchema");
1079+ });
1080+ #pragma warning restore 612, 618
1081+ }
1082+ }
1083+ }
1084+
1085+ """ ,
1086+ model =>
1087+ {
1088+ Assert . Equal ( 5 , model . GetAnnotations ( ) . Count ( ) ) ;
1089+ Assert . Equal ( 2 , model . GetEntityTypes ( ) . Count ( ) ) ;
1090+
1091+ var catType = model . FindEntityType ( "Microsoft.EntityFrameworkCore.Migrations.ModelSnapshotSqlServerTest+Cat" ) ;
1092+ Assert . Equal ( "Cats" , catType . GetTableName ( ) ) ;
1093+ Assert . Null ( catType . GetViewName ( ) ) ;
1094+ Assert . Null ( catType . FindProperty ( "Discriminator" ) ) ;
1095+
1096+ var dogType = model . FindEntityType ( "Microsoft.EntityFrameworkCore.Migrations.ModelSnapshotSqlServerTest+Dog" ) ;
1097+ Assert . Equal ( "Dogs" , dogType . GetTableName ( ) ) ;
1098+ Assert . Null ( dogType . GetViewName ( ) ) ;
1099+ } ) ;
1100+
10021101 [ ConditionalFact ]
10031102 public virtual void Entity_splitting_is_stored_in_snapshot_with_tables ( )
10041103 => Test (
@@ -1678,7 +1777,7 @@ public virtual void CheckConstraint_is_only_stored_in_snapshot_once_for_TPH()
16781777
16791778 b.ToTable("BaseEntity", "DefaultSchema");
16801779
1681- b.HasDiscriminator<string>("Discriminator" ).HasValue("BaseEntity");
1780+ b.HasDiscriminator( ).HasValue("BaseEntity");
16821781
16831782 b.UseTphMappingStrategy();
16841783 });
@@ -2011,7 +2110,7 @@ public virtual void BaseType_is_stored_in_snapshot()
20112110
20122111 b.ToTable("BaseEntity", "DefaultSchema");
20132112
2014- b.HasDiscriminator<string>("Discriminator" ).HasValue("BaseEntity");
2113+ b.HasDiscriminator( ).HasValue("BaseEntity");
20152114
20162115 b.UseTphMappingStrategy();
20172116 });
@@ -2082,7 +2181,7 @@ public virtual void Discriminator_annotations_are_stored_in_snapshot()
20822181
20832182 b.ToTable("BaseEntity", "DefaultSchema");
20842183
2085- b.HasDiscriminator<string>("Discriminator" ).IsComplete(true).HasValue("BaseEntity");
2184+ b.HasDiscriminator( ).IsComplete(true).HasValue("BaseEntity");
20862185
20872186 b.UseTphMappingStrategy();
20882187 });
@@ -2158,7 +2257,7 @@ public virtual void Converted_discriminator_annotations_are_stored_in_snapshot()
21582257
21592258 b.ToTable("BaseEntityWithStructDiscriminator", "DefaultSchema");
21602259
2161- b.HasDiscriminator<string>("Discriminator" ).IsComplete(true).HasValue("Base");
2260+ b.HasDiscriminator( ).IsComplete(true).HasValue("Base");
21622261
21632262 b.UseTphMappingStrategy();
21642263 });
@@ -4614,7 +4713,7 @@ public virtual void Property_column_name_is_stored_in_snapshot_when_DefaultColum
46144713
46154714 b.ToTable("BarBase", "DefaultSchema");
46164715
4617- b.HasDiscriminator<string>("Discriminator" ).HasValue("BarBase");
4716+ b.HasDiscriminator( ).HasValue("BarBase");
46184717
46194718 b.UseTphMappingStrategy();
46204719 });
@@ -4830,7 +4929,7 @@ public virtual void Property_column_name_on_specific_table_is_stored_in_snapshot
48304929
48314930 b.ToTable("BaseEntity", "DefaultSchema");
48324931
4833- b.HasDiscriminator<string>("Discriminator" ).HasValue("BaseEntity");
4932+ b.HasDiscriminator( ).HasValue("BaseEntity");
48344933
48354934 b.UseTphMappingStrategy();
48364935 });
@@ -7090,7 +7189,7 @@ public virtual void Do_not_generate_entity_type_builder_again_if_no_foreign_key_
70907189
70917190 b.ToTable("BaseType", "DefaultSchema");
70927191
7093- b.HasDiscriminator<string>("Discriminator" ).HasValue("BaseType");
7192+ b.HasDiscriminator( ).HasValue("BaseType");
70947193
70957194 b.UseTphMappingStrategy();
70967195 });
0 commit comments