diff --git a/EFCore.NamingConventions.Test/LowerCaseNamingTest.cs b/EFCore.NamingConventions.Test/LowerCaseNamingTest.cs index 90f39ff..fd31188 100644 --- a/EFCore.NamingConventions.Test/LowerCaseNamingTest.cs +++ b/EFCore.NamingConventions.Test/LowerCaseNamingTest.cs @@ -28,7 +28,15 @@ namespace EFCore.NamingConventions.Test { using var context = CreateContext(); var entityType = context.Model.FindEntityType(typeof(SimpleBlog)); - Assert.Equal("pk_simpleblog", entityType.GetKeys().Single().GetName()); + Assert.Equal("pk_simpleblog", entityType.GetKeys().Single(k => k.IsPrimaryKey()).GetName()); + } + + [Fact] + public void Alternative_key_name_is_rewritten() + { + using var context = CreateContext(); + var entityType = context.Model.FindEntityType(typeof(SimpleBlog)); + Assert.Equal("ak_simpleblog_somealternativekey", entityType.GetKeys().Single(k => !k.IsPrimaryKey()).GetName()); } [Fact] diff --git a/EFCore.NamingConventions.Test/RewriterTestBase.cs b/EFCore.NamingConventions.Test/RewriterTestBase.cs index 3734a38..93b9d79 100644 --- a/EFCore.NamingConventions.Test/RewriterTestBase.cs +++ b/EFCore.NamingConventions.Test/RewriterTestBase.cs @@ -16,10 +16,12 @@ namespace EFCore.NamingConventions.Test public DbSet Blog { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) - { - modelBuilder.Entity(e => e.HasIndex(b => b.FullName)); - modelBuilder.Entity().OwnsOne(p => p.OwnedStatistics); - } + => modelBuilder.Entity(e => + { + e.HasIndex(b => b.FullName); + e.OwnsOne(b => b.OwnedStatistics); + e.HasAlternateKey(b => b.SomeAlternativeKey); + }); protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => _useNamingConvention(optionsBuilder.UseInMemoryDatabase("test")); @@ -29,6 +31,7 @@ namespace EFCore.NamingConventions.Test { public int Id { get; set; } public string FullName { get; set; } + public int SomeAlternativeKey { get; set; } public List Posts { get; set; } diff --git a/EFCore.NamingConventions.Test/SnakeCaseNamingTest.cs b/EFCore.NamingConventions.Test/SnakeCaseNamingTest.cs index 955253f..bedd4ca 100644 --- a/EFCore.NamingConventions.Test/SnakeCaseNamingTest.cs +++ b/EFCore.NamingConventions.Test/SnakeCaseNamingTest.cs @@ -36,7 +36,15 @@ namespace EFCore.NamingConventions.Test { using var context = CreateContext(); var entityType = context.Model.FindEntityType(typeof(SimpleBlog)); - Assert.Equal("pk_simple_blog", entityType.GetKeys().Single().GetName()); + Assert.Equal("pk_simple_blog", entityType.GetKeys().Single(k => k.IsPrimaryKey()).GetName()); + } + + [Fact] + public void Alternative_key_name_is_rewritten() + { + using var context = CreateContext(); + var entityType = context.Model.FindEntityType(typeof(SimpleBlog)); + Assert.Equal("ak_simple_blog_some_alternative_key", entityType.GetKeys().Single(k => !k.IsPrimaryKey()).GetName()); } [Fact] @@ -54,7 +62,7 @@ namespace EFCore.NamingConventions.Test var entityType = context.Model.FindEntityType(typeof(SimpleBlog)); Assert.Equal("ix_simple_blog_full_name", entityType.GetIndexes().Single().GetName()); } - + TestContext CreateContext() => new TestContext(NamingConventionsExtensions.UseSnakeCaseNamingConvention); } } diff --git a/EFCore.NamingConventions.Test/UpperCaseNamingTest.cs b/EFCore.NamingConventions.Test/UpperCaseNamingTest.cs index 7d0f805..02647d2 100644 --- a/EFCore.NamingConventions.Test/UpperCaseNamingTest.cs +++ b/EFCore.NamingConventions.Test/UpperCaseNamingTest.cs @@ -28,7 +28,15 @@ namespace EFCore.NamingConventions.Test { using var context = CreateContext(); var entityType = context.Model.FindEntityType(typeof(SimpleBlog)); - Assert.Equal("PK_SIMPLEBLOG", entityType.GetKeys().Single().GetName()); + Assert.Equal("PK_SIMPLEBLOG", entityType.GetKeys().Single(k => k.IsPrimaryKey()).GetName()); + } + + [Fact] + public void Alternative_key_name_is_rewritten() + { + using var context = CreateContext(); + var entityType = context.Model.FindEntityType(typeof(SimpleBlog)); + Assert.Equal("AK_SIMPLEBLOG_SOMEALTERNATIVEKEY", entityType.GetKeys().Single(k => !k.IsPrimaryKey()).GetName()); } [Fact] diff --git a/EFCore.NamingConventions/NamingConventions/Internal/NameRewriterBase.cs b/EFCore.NamingConventions/NamingConventions/Internal/NameRewriterBase.cs index f164bba..3737ff6 100644 --- a/EFCore.NamingConventions/NamingConventions/Internal/NameRewriterBase.cs +++ b/EFCore.NamingConventions/NamingConventions/Internal/NameRewriterBase.cs @@ -10,7 +10,8 @@ namespace EFCore.NamingConventions.Internal /// internal abstract class NameRewriterBase : IEntityTypeAddedConvention, IPropertyAddedConvention, IForeignKeyOwnershipChangedConvention, - IEntityTypePrimaryKeyChangedConvention, IForeignKeyAddedConvention, IIndexAddedConvention + IKeyAddedConvention, IForeignKeyAddedConvention, + IIndexAddedConvention { public virtual void ProcessEntityTypeAdded( IConventionEntityTypeBuilder entityTypeBuilder, IConventionContext context) @@ -33,13 +34,8 @@ namespace EFCore.NamingConventions.Internal } } - public void ProcessEntityTypePrimaryKeyChanged( - IConventionEntityTypeBuilder entityTypeBuilder, - IConventionKey newPrimaryKey, - IConventionKey previousPrimaryKey, IConventionContext context) - { - newPrimaryKey?.Builder?.HasName(RewriteName(newPrimaryKey.GetName())); - } + public void ProcessKeyAdded(IConventionKeyBuilder keyBuilder, IConventionContext context) + => keyBuilder.HasName(RewriteName(keyBuilder.Metadata.GetName())); public void ProcessForeignKeyAdded( IConventionRelationshipBuilder relationshipBuilder, diff --git a/EFCore.NamingConventions/NamingConventions/Internal/NamingConventionSetPlugin.cs b/EFCore.NamingConventions/NamingConventions/Internal/NamingConventionSetPlugin.cs index e4b8374..7fa2ee9 100644 --- a/EFCore.NamingConventions/NamingConventions/Internal/NamingConventionSetPlugin.cs +++ b/EFCore.NamingConventions/NamingConventions/Internal/NamingConventionSetPlugin.cs @@ -30,7 +30,7 @@ namespace EFCore.NamingConventions.Internal conventionSet.EntityTypeAddedConventions.Add(nameRewriter); conventionSet.PropertyAddedConventions.Add(nameRewriter); conventionSet.ForeignKeyOwnershipChangedConventions.Add(nameRewriter); - conventionSet.EntityTypePrimaryKeyChangedConventions.Add(nameRewriter); + conventionSet.KeyAddedConventions.Add(nameRewriter); conventionSet.ForeignKeyAddedConventions.Add(nameRewriter); conventionSet.IndexAddedConventions.Add(nameRewriter);