From ea2a9099c4b8284da8a7fc447ff34155873abc78 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Fri, 5 Jan 2024 12:31:28 +0100 Subject: [PATCH] Fix foreign key property change when foreign key is no longer in the model (#255) Fixes #251 --- .../NameRewritingConventionTest.cs | 25 ++++++++++++++++++- .../Internal/NameRewritingConvention.cs | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/EFCore.NamingConventions.Test/NameRewritingConventionTest.cs b/EFCore.NamingConventions.Test/NameRewritingConventionTest.cs index f412944..cd50adb 100644 --- a/EFCore.NamingConventions.Test/NameRewritingConventionTest.cs +++ b/EFCore.NamingConventions.Test/NameRewritingConventionTest.cs @@ -99,13 +99,23 @@ public void Alternative_key() } [Fact] - public void Foreign_key() + public void Foreign_key_collection_navigation() { var model = BuildModel(b => b.Entity()); var entityType = model.FindEntityType(typeof(Post))!; Assert.Equal("fk_post_blog_blog_id", entityType.GetForeignKeys().Single().GetConstraintName()); } + [Fact] + public void Foreign_key_reference_navigation() + { + var model = BuildModel(b => b.Entity()); + var entityType = model.FindEntityType(typeof(ReferenceNavigationDependent))!; + Assert.Equal( + "fk_reference_navigation_dependent_reference_navigation_principal_principal_id", + entityType.GetForeignKeys().Single().GetConstraintName()); + } + [Fact] public void Index() { @@ -817,6 +827,19 @@ public class Location public double Latitude { get; set; } } + public class ReferenceNavigationPrincipal + { + public int Id { get; set; } + public ReferenceNavigationDependent Dependent { get; set; } + } + + public class ReferenceNavigationDependent + { + public int Id { get; set; } + public int PrincipalId { get; set; } + public ReferenceNavigationPrincipal Principal { get; set; } + } + public class Board { public int Id { get; } diff --git a/EFCore.NamingConventions/Internal/NameRewritingConvention.cs b/EFCore.NamingConventions/Internal/NameRewritingConvention.cs index ed1394c..9e2dcbd 100644 --- a/EFCore.NamingConventions/Internal/NameRewritingConvention.cs +++ b/EFCore.NamingConventions/Internal/NameRewritingConvention.cs @@ -310,7 +310,7 @@ public void ProcessForeignKeyPropertiesChanged( IConventionKey oldPrincipalKey, IConventionContext> context) { - if (relationshipBuilder.Metadata.GetDefaultName() is { } constraintName) + if (relationshipBuilder.Metadata.GetDefaultName() is { } constraintName && relationshipBuilder.Metadata.IsInModel) { relationshipBuilder.HasConstraintName(_namingNameRewriter.RewriteName(constraintName)); }