diff --git a/src/EFCore.Relational/Extensions/RelationalEntityTypeExtensions.cs b/src/EFCore.Relational/Extensions/RelationalEntityTypeExtensions.cs
index eed9d50f07d..869eaef22f1 100644
--- a/src/EFCore.Relational/Extensions/RelationalEntityTypeExtensions.cs
+++ b/src/EFCore.Relational/Extensions/RelationalEntityTypeExtensions.cs
@@ -135,6 +135,12 @@ public static void SetTableName(this IMutableEntityType entityType, string? name
/// The database schema that contains the mapped table.
public static string? GetSchema(this IReadOnlyEntityType entityType)
{
+ if (entityType.GetTableName() == null
+ && !(AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue26651", out var enabled) && enabled))
+ {
+ return null;
+ }
+
var schemaAnnotation = entityType.FindAnnotation(RelationalAnnotationNames.Schema);
if (schemaAnnotation != null)
{
diff --git a/test/EFCore.Design.Tests/Migrations/ModelSnapshotSqlServerTest.cs b/test/EFCore.Design.Tests/Migrations/ModelSnapshotSqlServerTest.cs
index df48756c696..cc2a489890e 100644
--- a/test/EFCore.Design.Tests/Migrations/ModelSnapshotSqlServerTest.cs
+++ b/test/EFCore.Design.Tests/Migrations/ModelSnapshotSqlServerTest.cs
@@ -564,6 +564,37 @@ public void Views_are_stored_in_the_model_snapshot()
o => Assert.Equal("EntityWithOneProperty", o.GetEntityTypes().Single().GetViewName()));
}
+ [ConditionalFact]
+ public void Unmapped_entity_types_are_stored_in_the_model_snapshot()
+ {
+ Test(
+ builder => {
+ builder.HasDefaultSchema("default");
+ builder.Entity().Ignore(e => e.EntityWithTwoProperties).ToTable((string)null);
+ },
+ AddBoilerPlate(@"
+ modelBuilder
+ .HasDefaultSchema(""default"")
+ .HasAnnotation(""Relational:MaxIdentifierLength"", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+ modelBuilder.Entity(""Microsoft.EntityFrameworkCore.Migrations.ModelSnapshotSqlServerTest+EntityWithOneProperty"", b =>
+ {
+ b.Property(""Id"")
+ .ValueGeneratedOnAdd()
+ .HasColumnType(""int"");
+
+ b.HasKey(""Id"");
+
+ b.ToTable((string)null);
+ });"),
+ o => {
+ Assert.Null(o.GetEntityTypes().Single().GetTableName());
+ Assert.Null(o.GetEntityTypes().Single().GetSchema());
+ });
+ }
+
private class TestKeylessType
{
public string Something { get; set; }
diff --git a/test/EFCore.Relational.Specification.Tests/Migrations/MigrationsTestBase.cs b/test/EFCore.Relational.Specification.Tests/Migrations/MigrationsTestBase.cs
index 403d10250b3..1b240ecd7c4 100644
--- a/test/EFCore.Relational.Specification.Tests/Migrations/MigrationsTestBase.cs
+++ b/test/EFCore.Relational.Specification.Tests/Migrations/MigrationsTestBase.cs
@@ -101,7 +101,9 @@ await Test(
Assert.Equal("People", peopleTable.Name);
if (AssertSchemaNames)
+ {
Assert.Equal("dbo2", peopleTable.Schema);
+ }
Assert.Collection(
peopleTable.Columns.OrderBy(c => c.Name),