diff --git a/src/EFCore.Relational/Metadata/Internal/RelationalForeignKeyExtensions.cs b/src/EFCore.Relational/Metadata/Internal/RelationalForeignKeyExtensions.cs index 1f8062934f2..e784f74e10f 100644 --- a/src/EFCore.Relational/Metadata/Internal/RelationalForeignKeyExtensions.cs +++ b/src/EFCore.Relational/Metadata/Internal/RelationalForeignKeyExtensions.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; using Microsoft.EntityFrameworkCore.Diagnostics; @@ -44,9 +45,7 @@ public static bool AreCompatible( var columnNames = foreignKey.Properties.GetColumnNames(storeObject); var duplicateColumnNames = duplicateForeignKey.Properties.GetColumnNames(storeObject); if (columnNames is null - || duplicateColumnNames is null - || principalTable is null - || duplicatePrincipalTable is null) + || duplicateColumnNames is null) { if (shouldThrow) { @@ -66,11 +65,13 @@ public static bool AreCompatible( return false; } - var principalColumns = foreignKey.PrincipalKey.Properties.GetColumnNames(principalTable.Value); - var duplicatePrincipalColumns = duplicateForeignKey.PrincipalKey.Properties.GetColumnNames(principalTable.Value); - if (principalTable != duplicatePrincipalTable - || principalColumns == null - || duplicatePrincipalColumns == null) + if (principalTable is null + || duplicatePrincipalTable is null + || principalTable != duplicatePrincipalTable + || !(foreignKey.PrincipalKey.Properties.GetColumnNames(principalTable.Value) + is IReadOnlyList principalColumns) + || !(duplicateForeignKey.PrincipalKey.Properties.GetColumnNames(principalTable.Value) + is IReadOnlyList duplicatePrincipalColumns)) { if (shouldThrow) { @@ -81,7 +82,9 @@ public static bool AreCompatible( duplicateForeignKey.Properties.Format(), duplicateForeignKey.DeclaringEntityType.DisplayName(), foreignKey.DeclaringEntityType.GetSchemaQualifiedTableName(), - foreignKey.GetConstraintName(storeObject, principalTable.Value), + principalTable.HasValue + ? foreignKey.GetConstraintName(storeObject, principalTable.Value) + : foreignKey.GetDefaultName(), principalType.GetSchemaQualifiedTableName(), duplicatePrincipalType.GetSchemaQualifiedTableName())); } diff --git a/src/EFCore/Query/Internal/NavigationExpandingExpressionVisitor.ExpressionVisitors.cs b/src/EFCore/Query/Internal/NavigationExpandingExpressionVisitor.ExpressionVisitors.cs index b106a121cb1..09e96a18694 100644 --- a/src/EFCore/Query/Internal/NavigationExpandingExpressionVisitor.ExpressionVisitors.cs +++ b/src/EFCore/Query/Internal/NavigationExpandingExpressionVisitor.ExpressionVisitors.cs @@ -132,9 +132,7 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCallExp var skipNavigation = memberIdentity.MemberInfo != null ? entityType.FindSkipNavigation(memberIdentity.MemberInfo) - : memberIdentity.Name is not null - ? entityType.FindSkipNavigation(memberIdentity.Name) - : null; + : entityType.FindSkipNavigation(memberIdentity.Name!); if (skipNavigation != null) { return ExpandSkipNavigation(root, entityReference, skipNavigation, convertedType != null);