Skip to content

Commit 94f0b72

Browse files
authored
Throw when IsExcludedFromMigrations is executed on the runtime model (#37869)
Leftover from #37815
1 parent 1b36259 commit 94f0b72

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

src/EFCore.Relational/Extensions/RelationalForeignKeyExtensions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,9 @@ static bool IsMapped(IReadOnlyForeignKey foreignKey, StoreObjectIdentifier store
295295
/// <param name="foreignKey">The foreign key.</param>
296296
/// <returns><see langword="true" /> if the foreign key constraint is excluded from migrations.</returns>
297297
public static bool IsExcludedFromMigrations(this IReadOnlyForeignKey foreignKey)
298-
=> (bool?)foreignKey[RelationalAnnotationNames.IsForeignKeyExcludedFromMigrations] ?? false;
298+
=> foreignKey is RuntimeForeignKey
299+
? throw new InvalidOperationException(CoreStrings.RuntimeModelMissingData)
300+
: (bool?)foreignKey[RelationalAnnotationNames.IsForeignKeyExcludedFromMigrations] ?? false;
299301

300302
/// <summary>
301303
/// Sets a value indicating whether the foreign key constraint is excluded from migrations.

test/EFCore.Relational.Specification.Tests/Scaffolding/CompiledModelRelationalTestBase.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,10 @@ protected override void AssertBigModel(IModel model, bool jsonColumns)
217217

218218
var dependentNavigation = principalDerived.GetDeclaredNavigations().First();
219219
var dependentForeignKey = dependentNavigation.ForeignKey;
220-
Assert.False(dependentForeignKey.IsExcludedFromMigrations());
220+
Assert.Null(dependentForeignKey[RelationalAnnotationNames.IsForeignKeyExcludedFromMigrations]);
221+
Assert.Equal(
222+
CoreStrings.RuntimeModelMissingData,
223+
Assert.Throws<InvalidOperationException>(() => dependentForeignKey.IsExcludedFromMigrations()).Message);
221224

222225
var referenceOwnedNavigation = principalBase.GetNavigations().Single();
223226
var referenceOwnedType = referenceOwnedNavigation.TargetEntityType;

0 commit comments

Comments
 (0)