From c1602497b6d552c79912a8027bd6069c25b74419 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Tue, 12 Nov 2019 11:27:19 -0800 Subject: [PATCH] Add missing Ordinal to {Starts,Ends}With Fixes #18831 --- src/EFCore.Design/Design/Internal/NamespaceComparer.cs | 5 +++-- .../Storage/RelationalSqlGenerationHelper.cs | 3 ++- .../Internal/SubqueryMemberPushdownExpressionVisitor.cs | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/EFCore.Design/Design/Internal/NamespaceComparer.cs b/src/EFCore.Design/Design/Internal/NamespaceComparer.cs index 9d0148b75ba..8ed1119939a 100644 --- a/src/EFCore.Design/Design/Internal/NamespaceComparer.cs +++ b/src/EFCore.Design/Design/Internal/NamespaceComparer.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Collections.Generic; namespace Microsoft.EntityFrameworkCore.Design.Internal @@ -13,8 +14,8 @@ public class NamespaceComparer : IComparer /// public virtual int Compare(string x, string y) { - var xSystemNamespace = x != null && (string.Equals(x, "System") || x.StartsWith("System.")); - var ySystemNamespace = y != null && (string.Equals(y, "System") || y.StartsWith("System.")); + var xSystemNamespace = x != null && (x == "System" || x.StartsWith("System.", StringComparison.Ordinal)); + var ySystemNamespace = y != null && (y == "System" || y.StartsWith("System.", StringComparison.Ordinal)); return xSystemNamespace && !ySystemNamespace ? -1 diff --git a/src/EFCore.Relational/Storage/RelationalSqlGenerationHelper.cs b/src/EFCore.Relational/Storage/RelationalSqlGenerationHelper.cs index af27324bb63..cb596b6bada 100644 --- a/src/EFCore.Relational/Storage/RelationalSqlGenerationHelper.cs +++ b/src/EFCore.Relational/Storage/RelationalSqlGenerationHelper.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.IO; using System.Text; using JetBrains.Annotations; @@ -57,7 +58,7 @@ public RelationalSqlGenerationHelper([NotNull] RelationalSqlGenerationHelperDepe /// A valid name based on the candidate name. /// public virtual string GenerateParameterName(string name) - => name.StartsWith("@") + => name.StartsWith("@", StringComparison.Ordinal) ? name : "@" + name; diff --git a/src/EFCore/Query/Internal/SubqueryMemberPushdownExpressionVisitor.cs b/src/EFCore/Query/Internal/SubqueryMemberPushdownExpressionVisitor.cs index 927211df66a..747b8990a54 100644 --- a/src/EFCore/Query/Internal/SubqueryMemberPushdownExpressionVisitor.cs +++ b/src/EFCore/Query/Internal/SubqueryMemberPushdownExpressionVisitor.cs @@ -130,7 +130,7 @@ private Expression PushdownMember( { var selector = sourceMethodCallExpression.Arguments[1].UnwrapLambdaFromQuote(); var selectorBody = selector.Body; - var memberAccessExpression = createSelector(selectorBody, methodCallExpression.Method.Name.EndsWith("OrDefault")); + var memberAccessExpression = createSelector(selectorBody, methodCallExpression.Method.Name.EndsWith("OrDefault", StringComparison.Ordinal)); source = Expression.Call( QueryableMethods.Select.MakeGenericMethod( @@ -143,7 +143,7 @@ private Expression PushdownMember( else { var parameter = Expression.Parameter(queryableType, "s"); - var memberAccessExpression = createSelector(parameter, methodCallExpression.Method.Name.EndsWith("OrDefault")); + var memberAccessExpression = createSelector(parameter, methodCallExpression.Method.Name.EndsWith("OrDefault", StringComparison.Ordinal)); source = Expression.Call( QueryableMethods.Select.MakeGenericMethod(queryableType, memberAccessExpression.Type),