From 748054bf6ed4d88ad4aecc000f56736d558425b0 Mon Sep 17 00:00:00 2001 From: Vyacheslav Mostovoy Date: Mon, 19 Apr 2021 20:58:50 +0300 Subject: [PATCH] Support efcore 6.0 preview 3 (#80) --- .github/workflows/build.yml | 2 +- Directory.Packages.props | 4 +- .../EFCore.NamingConventions.Test.csproj | 2 +- .../EFCore.NamingConventions.csproj | 4 +- .../Internal/NameRewritingConvention.cs | 56 +++++++++++-------- 5 files changed, 40 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6e16c63..cebd6e6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ jobs: - name: Setup .NET Core SDK uses: actions/setup-dotnet@v1 with: - dotnet-version: '5.0.x' + dotnet-version: '6.0.100-preview.3.21202.5' - name: Test run: dotnet test diff --git a/Directory.Packages.props b/Directory.Packages.props index 0f354ec..f114570 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,7 +1,7 @@  - 5.0.5 - 5.0.0 + 6.0.0-preview.3.21201.2 + 6.0.0-preview.3.21201.4 diff --git a/EFCore.NamingConventions.Test/EFCore.NamingConventions.Test.csproj b/EFCore.NamingConventions.Test/EFCore.NamingConventions.Test.csproj index 99c386a..90f0d08 100644 --- a/EFCore.NamingConventions.Test/EFCore.NamingConventions.Test.csproj +++ b/EFCore.NamingConventions.Test/EFCore.NamingConventions.Test.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 diff --git a/EFCore.NamingConventions/EFCore.NamingConventions.csproj b/EFCore.NamingConventions/EFCore.NamingConventions.csproj index 0290744..c69b571 100644 --- a/EFCore.NamingConventions/EFCore.NamingConventions.csproj +++ b/EFCore.NamingConventions/EFCore.NamingConventions.csproj @@ -1,8 +1,8 @@ - netstandard2.1 - 5.0.2 + net6.0 + 6.0.0-preview.3 true true ../EFCore.NamingConventions.snk diff --git a/EFCore.NamingConventions/Internal/NameRewritingConvention.cs b/EFCore.NamingConventions/Internal/NameRewritingConvention.cs index b23bc10..db36b96 100644 --- a/EFCore.NamingConventions/Internal/NameRewritingConvention.cs +++ b/EFCore.NamingConventions/Internal/NameRewritingConvention.cs @@ -4,24 +4,31 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Conventions; -using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace EFCore.NamingConventions.Internal { public class NameRewritingConvention : - IEntityTypeAddedConvention, IEntityTypeAnnotationChangedConvention, IPropertyAddedConvention, - IForeignKeyOwnershipChangedConvention, IKeyAddedConvention, IForeignKeyAddedConvention, - IIndexAddedConvention, IEntityTypeBaseTypeChangedConvention, IModelFinalizingConvention + IEntityTypeAddedConvention, + IEntityTypeAnnotationChangedConvention, + IPropertyAddedConvention, + IForeignKeyOwnershipChangedConvention, + IKeyAddedConvention, + IForeignKeyAddedConvention, + IIndexAddedConvention, + IEntityTypeBaseTypeChangedConvention, + IModelFinalizingConvention { private static readonly StoreObjectType[] _storeObjectTypes - = { StoreObjectType.Table, StoreObjectType.View, StoreObjectType.Function, StoreObjectType.SqlQuery}; + = { StoreObjectType.Table, StoreObjectType.View, StoreObjectType.Function, StoreObjectType.SqlQuery }; private readonly INameRewriter _namingNameRewriter; - public NameRewritingConvention(INameRewriter nameRewriter) => _namingNameRewriter = nameRewriter; + public NameRewritingConvention(INameRewriter nameRewriter) + => _namingNameRewriter = nameRewriter; public virtual void ProcessEntityTypeAdded( - IConventionEntityTypeBuilder entityTypeBuilder, IConventionContext context) + IConventionEntityTypeBuilder entityTypeBuilder, + IConventionContext context) { var entityType = entityTypeBuilder.Metadata; @@ -72,8 +79,7 @@ namespace EFCore.NamingConventions.Internal var foreignKey = relationshipBuilder.Metadata; var ownedEntityType = foreignKey.DeclaringEntityType; - if (foreignKey.IsOwnership && - ownedEntityType.GetTableNameConfigurationSource() != ConfigurationSource.Explicit) + if (foreignKey.IsOwnership && ownedEntityType.GetTableNameConfigurationSource() != ConfigurationSource.Explicit) { // An entity type is becoming owned - this is complicated. @@ -94,8 +100,12 @@ namespace EFCore.NamingConventions.Internal } } - public void ProcessEntityTypeAnnotationChanged(IConventionEntityTypeBuilder entityTypeBuilder, string name, - IConventionAnnotation annotation, IConventionAnnotation oldAnnotation, IConventionContext context) + public void ProcessEntityTypeAnnotationChanged( + IConventionEntityTypeBuilder entityTypeBuilder, + string name, + IConventionAnnotation annotation, + IConventionAnnotation oldAnnotation, + IConventionContext context) { var entityType = entityTypeBuilder.Metadata; @@ -134,9 +144,9 @@ namespace EFCore.NamingConventions.Internal index.Builder.HasDatabaseName(_namingNameRewriter.RewriteName(index.GetDefaultDatabaseName())); } - if (annotation?.Value is not null && - entityType.FindOwnership() is IConventionForeignKey ownership && - (string)annotation.Value != ownership.PrincipalEntityType.GetTableName()) + if (annotation?.Value is not null + && entityType.FindOwnership() is IConventionForeignKey ownership + && (string)annotation.Value != ownership.PrincipalEntityType.GetTableName()) { // An owned entity's table is being set explicitly - this is the trigger to undo table splitting (which is the default). @@ -157,7 +167,9 @@ namespace EFCore.NamingConventions.Internal } } - public void ProcessForeignKeyAdded(IConventionForeignKeyBuilder relationshipBuilder, IConventionContext context) + public void ProcessForeignKeyAdded( + IConventionForeignKeyBuilder relationshipBuilder, + IConventionContext context) => relationshipBuilder.HasConstraintName(_namingNameRewriter.RewriteName(relationshipBuilder.Metadata.GetDefaultName())); public void ProcessKeyAdded(IConventionKeyBuilder keyBuilder, IConventionContext context) @@ -189,8 +201,7 @@ namespace EFCore.NamingConventions.Internal if (columnName.StartsWith(entityType.ShortName() + '_', StringComparison.Ordinal)) { property.Builder.HasColumnName( - _namingNameRewriter.RewriteName(entityType.ShortName()) + - columnName.Substring(entityType.ShortName().Length)); + _namingNameRewriter.RewriteName(entityType.ShortName()) + columnName.Substring(entityType.ShortName().Length)); } foreach (var storeObjectType in _storeObjectTypes) @@ -205,8 +216,8 @@ namespace EFCore.NamingConventions.Internal if (columnName.StartsWith(entityType.ShortName() + '_', StringComparison.Ordinal)) { property.Builder.HasColumnName( - _namingNameRewriter.RewriteName(entityType.ShortName()) + - columnName.Substring(entityType.ShortName().Length)); + _namingNameRewriter.RewriteName(entityType.ShortName()) + + columnName.Substring(entityType.ShortName().Length)); } } } @@ -224,9 +235,10 @@ namespace EFCore.NamingConventions.Internal // TODO: The following is a temporary hack. We should probably just always set the relational override below, // but https://github.com/dotnet/efcore/pull/23834 -#pragma warning disable 618 - propertyBuilder.HasColumnName(_namingNameRewriter.RewriteName(property.GetColumnName())); -#pragma warning restore 618 + var baseColumnName = StoreObjectIdentifier.Create(property.DeclaringEntityType, StoreObjectType.Table) is { } tableIdentifier + ? property.GetDefaultColumnName(tableIdentifier) + : property.GetDefaultColumnBaseName(); + propertyBuilder.HasColumnName(_namingNameRewriter.RewriteName(baseColumnName)); foreach (var storeObjectType in _storeObjectTypes) {