diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e09d543..538a82e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,16 +4,14 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v3 - name: Setup .NET Core SDK - uses: actions/setup-dotnet@v3.0.2 - with: - dotnet-version: '6.0.100-rc.1.21463.6' + uses: actions/setup-dotnet@v3 - name: Test run: dotnet test diff --git a/Directory.Packages.props b/Directory.Packages.props index 1bd61c7..f9be8de 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,7 +1,7 @@  - 6.0.10 - 6.0.0 + 7.0.0-rc.2.22472.11 + 7.0.0-rc.2.22472.3 diff --git a/EFCore.NamingConventions.Test/EFCore.NamingConventions.Test.csproj b/EFCore.NamingConventions.Test/EFCore.NamingConventions.Test.csproj index 90f0d08..a5f2179 100644 --- a/EFCore.NamingConventions.Test/EFCore.NamingConventions.Test.csproj +++ b/EFCore.NamingConventions.Test/EFCore.NamingConventions.Test.csproj @@ -1,7 +1,7 @@ - net6.0 + net7.0 diff --git a/EFCore.NamingConventions.Test/TestUtilities/SqliteTestHelpers.cs b/EFCore.NamingConventions.Test/TestUtilities/SqliteTestHelpers.cs index b2fb139..d4f109e 100644 --- a/EFCore.NamingConventions.Test/TestUtilities/SqliteTestHelpers.cs +++ b/EFCore.NamingConventions.Test/TestUtilities/SqliteTestHelpers.cs @@ -17,7 +17,7 @@ public class SqliteTestHelpers : TestHelpers public override IServiceCollection AddProviderServices(IServiceCollection services) => services.AddEntityFrameworkSqlite(); - public override void UseProviderOptions(DbContextOptionsBuilder optionsBuilder) + public override DbContextOptionsBuilder UseProviderOptions(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlite(new SqliteConnection("Data Source=:memory:")); #pragma warning disable EF1001 diff --git a/EFCore.NamingConventions.sln b/EFCore.NamingConventions.sln index 5c52968..4857ead 100644 --- a/EFCore.NamingConventions.sln +++ b/EFCore.NamingConventions.sln @@ -9,6 +9,7 @@ ProjectSection(SolutionItems) = preProject Directory.Build.props = Directory.Build.props .github\workflows\build.yml = .github\workflows\build.yml Directory.Packages.props = Directory.Packages.props + global.json = global.json EndProjectSection EndProject Global diff --git a/EFCore.NamingConventions/EFCore.NamingConventions.csproj b/EFCore.NamingConventions/EFCore.NamingConventions.csproj index d9e37cd..befea4f 100644 --- a/EFCore.NamingConventions/EFCore.NamingConventions.csproj +++ b/EFCore.NamingConventions/EFCore.NamingConventions.csproj @@ -2,7 +2,7 @@ net6.0 - 6.0.0 + 7.0.0-rc.2 true true ../EFCore.NamingConventions.snk @@ -11,7 +11,7 @@ true Naming Conventions for Entity Framework Core Tables and Columns. Shay Rojansky - Copyright 2021 © Shay Rojansky + Copyright 2022 © Shay Rojansky Entity Framework Core;entity-framework-core;ef;efcore;orm;sql Apache-2.0 git diff --git a/EFCore.NamingConventions/Internal/NameRewritingConvention.cs b/EFCore.NamingConventions/Internal/NameRewritingConvention.cs index b35a544..e8f87f4 100644 --- a/EFCore.NamingConventions/Internal/NameRewritingConvention.cs +++ b/EFCore.NamingConventions/Internal/NameRewritingConvention.cs @@ -216,32 +216,40 @@ public class NameRewritingConvention : { foreach (var property in entityType.GetProperties()) { - var columnName = property.GetColumnBaseName(); + var columnName = property.GetColumnName(); if (columnName.StartsWith(entityType.ShortName() + '_', StringComparison.Ordinal)) { property.Builder.HasColumnName( _namingNameRewriter.RewriteName(entityType.ShortName()) + columnName.Substring(entityType.ShortName().Length)); } - foreach (var storeObjectType in _storeObjectTypes) + var storeObject = StoreObjectIdentifier.Create(entityType, StoreObjectType.Table); + if (storeObject is null) { - var identifier = StoreObjectIdentifier.Create(entityType, storeObjectType); - if (identifier is null) - { - continue; - } + continue; + } - if (property.GetColumnNameConfigurationSource(identifier.Value) != ConfigurationSource.Convention) - { - continue; - } + var shortName = entityType.ShortName(); - columnName = property.GetColumnName(identifier.Value); - if (columnName.StartsWith(entityType.ShortName() + '_', StringComparison.Ordinal)) + if (property.Builder.CanSetColumnName(null)) + { + columnName = property.GetColumnName(); + if (columnName.StartsWith(shortName + '_', StringComparison.Ordinal)) { property.Builder.HasColumnName( - _namingNameRewriter.RewriteName(entityType.ShortName()) - + columnName.Substring(entityType.ShortName().Length)); + _namingNameRewriter.RewriteName(shortName) + + columnName.Substring(shortName.Length)); + } + } + + if (property.Builder.CanSetColumnName(null, storeObject.Value)) + { + columnName = property.GetColumnName(storeObject.Value); + if (columnName is not null && columnName.StartsWith(shortName + '_', StringComparison.Ordinal)) + { + property.Builder.HasColumnName( + _namingNameRewriter.RewriteName(shortName) + columnName.Substring(shortName.Length), + storeObject.Value); } } } @@ -260,7 +268,7 @@ public class NameRewritingConvention : // but https://github.com/dotnet/efcore/pull/23834 var baseColumnName = StoreObjectIdentifier.Create(property.DeclaringEntityType, StoreObjectType.Table) is { } tableIdentifier ? property.GetDefaultColumnName(tableIdentifier) - : property.GetDefaultColumnBaseName(); + : property.GetDefaultColumnName(); propertyBuilder.HasColumnName(_namingNameRewriter.RewriteName(baseColumnName)); foreach (var storeObjectType in _storeObjectTypes) diff --git a/global.json b/global.json index 227d556..659ed30 100644 --- a/global.json +++ b/global.json @@ -1,7 +1,7 @@ { "sdk": { - "version": "6.0.100-rc.1.21463.6", + "version": "7.0.100-rc.2.22477.23", "rollForward": "latestMajor", - "allowPrerelease": "true" + "allowPrerelease": true } }