From b6dfdcca02d13982b1648412b3fb2e64e95c17c7 Mon Sep 17 00:00:00 2001 From: Smit Patel Date: Wed, 29 Jul 2020 19:13:52 -0700 Subject: [PATCH] Rename defining query APIs (#21848) Rename InMemoryEntityTypeBuilderExtensions.ToQuery to ToInMemoryQuery Rename ToQuerySql to ToSqlQuery Part of #20409 --- .../InMemoryEntityTypeBuilderExtensions.cs | 16 ++++++------- .../InMemoryEntityTypeExtensions.cs | 24 +++++++++---------- .../Internal/InMemoryModelValidator.cs | 2 +- .../DefiningQueryRewritingConvention.cs | 5 ++-- .../RelationalEntityTypeBuilderExtensions.cs | 14 +++++------ .../RelationalEntityTypeExtensions.cs | 24 +++++++++---------- .../RelationalModelValidator.cs | 4 ++-- .../Metadata/Internal/RelationalModel.cs | 22 +++++++++-------- .../Metadata/RelationalAnnotationNames.cs | 16 ++++++------- .../Metadata/SqlQueryExtensions.cs | 2 +- .../Metadata/StoreObjectIdentifier.cs | 2 +- ...yableMethodTranslatingExpressionVisitor.cs | 4 ++-- .../ConventionEntityTypeExtensions.cs | 4 ++-- src/EFCore/Extensions/EntityTypeExtensions.cs | 2 +- .../Extensions/MutableEntityTypeExtensions.cs | 2 +- .../Metadata/Builders/EntityTypeBuilder`.cs | 2 +- .../Builders/IConventionEntityTypeBuilder.cs | 4 ++-- .../QueryFilterRewritingConvention.cs | 10 ++++---- .../Query/InheritanceQueryInMemoryFixture.cs | 4 +--- .../Query/NorthwindInMemoryContext.cs | 12 ++++------ .../Query/QueryBugsInMemoryTest.cs | 3 +-- .../WithConstructorsInMemoryTest.cs | 5 +--- .../InMemoryModelValidatorTest.cs | 6 ++--- .../InheritanceQueryRelationalFixture.cs | 2 +- .../Northwind/NorthwindRelationalContext.cs | 4 ++-- .../Metadata/RelationalModelTest.cs | 2 +- .../Internal/MigrationsModelDifferTest.cs | 2 +- .../Query/QueryBugsTest.cs | 2 +- .../WithConstructorsSqlServerTest.cs | 2 +- .../WithConstructorsSqliteTest.cs | 2 +- 30 files changed, 97 insertions(+), 108 deletions(-) diff --git a/src/EFCore.InMemory/Extensions/InMemoryEntityTypeBuilderExtensions.cs b/src/EFCore.InMemory/Extensions/InMemoryEntityTypeBuilderExtensions.cs index 3b6fca13d28..b0769362ca2 100644 --- a/src/EFCore.InMemory/Extensions/InMemoryEntityTypeBuilderExtensions.cs +++ b/src/EFCore.InMemory/Extensions/InMemoryEntityTypeBuilderExtensions.cs @@ -23,14 +23,14 @@ public static class InMemoryEntityTypeBuilderExtensions /// The builder for the entity type being configured. /// The query that will provide the underlying data for the entity type. /// The same builder instance so that multiple calls can be chained. - public static EntityTypeBuilder ToQuery( + public static EntityTypeBuilder ToInMemoryQuery( [NotNull] this EntityTypeBuilder entityTypeBuilder, [NotNull] Expression>> query) where TEntity : class { Check.NotNull(query, nameof(query)); - InMemoryEntityTypeExtensions.SetDefiningQuery(entityTypeBuilder.Metadata, query); + entityTypeBuilder.Metadata.SetInMemoryQuery(query); return entityTypeBuilder; } @@ -44,14 +44,14 @@ public static EntityTypeBuilder ToQuery( /// /// The same builder instance if the query was set, otherwise. /// - public static IConventionEntityTypeBuilder ToQuery( + public static IConventionEntityTypeBuilder ToInMemoryQuery( [NotNull] this IConventionEntityTypeBuilder entityTypeBuilder, [CanBeNull] LambdaExpression query, bool fromDataAnnotation = false) { - if (CanSetDefiningQuery(entityTypeBuilder, query, fromDataAnnotation)) + if (CanSetInMemoryQuery(entityTypeBuilder, query, fromDataAnnotation)) { - InMemoryEntityTypeExtensions.SetDefiningQuery(entityTypeBuilder.Metadata, query, fromDataAnnotation); + entityTypeBuilder.Metadata.SetInMemoryQuery(query, fromDataAnnotation); return entityTypeBuilder; } @@ -60,13 +60,13 @@ public static IConventionEntityTypeBuilder ToQuery( } /// - /// Returns a value indicating whether the given defining query can be set from the current configuration source. + /// Returns a value indicating whether the given in-memory query can be set from the current configuration source. /// /// The builder for the entity type being configured. /// The query that will provide the underlying data for the keyless entity type. /// Indicates whether the configuration was specified using a data annotation. - /// if the given defining query can be set. - public static bool CanSetDefiningQuery( + /// if the given in-memory query can be set. + public static bool CanSetInMemoryQuery( [NotNull] this IConventionEntityTypeBuilder entityTypeBuilder, [CanBeNull] LambdaExpression query, bool fromDataAnnotation = false) diff --git a/src/EFCore.InMemory/Extensions/InMemoryEntityTypeExtensions.cs b/src/EFCore.InMemory/Extensions/InMemoryEntityTypeExtensions.cs index cbf076e9590..9b6692bc19a 100644 --- a/src/EFCore.InMemory/Extensions/InMemoryEntityTypeExtensions.cs +++ b/src/EFCore.InMemory/Extensions/InMemoryEntityTypeExtensions.cs @@ -18,9 +18,9 @@ public static class InMemoryEntityTypeExtensions /// /// Gets the LINQ query used as the default source for queries of this type. /// - /// The entity type to get the defining query for. + /// The entity type to get the in-memory query for. /// The LINQ query used as the default source. - public static LambdaExpression GetDefiningQuery([NotNull] this IEntityType entityType) + public static LambdaExpression GetInMemoryQuery([NotNull] this IEntityType entityType) #pragma warning disable EF1001 // Internal EF Core API usage. #pragma warning disable CS0612 // Type or member is obsolete => (LambdaExpression)Check.NotNull(entityType, nameof(entityType))[CoreAnnotationNames.DefiningQuery]; @@ -31,14 +31,14 @@ public static LambdaExpression GetDefiningQuery([NotNull] this IEntityType entit /// Sets the LINQ query used as the default source for queries of this type. /// /// The entity type. - /// The LINQ query used as the default source. - public static void SetDefiningQuery( + /// The LINQ query used as the default source. + public static void SetInMemoryQuery( [NotNull] this IMutableEntityType entityType, - [CanBeNull] LambdaExpression definingQuery) + [CanBeNull] LambdaExpression inMemoryQuery) => Check.NotNull(entityType, nameof(entityType)) #pragma warning disable EF1001 // Internal EF Core API usage. #pragma warning disable CS0612 // Type or member is obsolete - .SetOrRemoveAnnotation(CoreAnnotationNames.DefiningQuery, definingQuery); + .SetOrRemoveAnnotation(CoreAnnotationNames.DefiningQuery, inMemoryQuery); #pragma warning restore CS0612 // Type or member is obsolete #pragma warning restore EF1001 // Internal EF Core API usage. @@ -46,26 +46,26 @@ public static void SetDefiningQuery( /// Sets the LINQ query used as the default source for queries of this type. /// /// The entity type. - /// The LINQ query used as the default source. + /// The LINQ query used as the default source. /// Indicates whether the configuration was specified using a data annotation. /// The configured entity type. - public static LambdaExpression SetDefiningQuery( + public static LambdaExpression SetInMemoryQuery( [NotNull] this IConventionEntityType entityType, - [CanBeNull] LambdaExpression definingQuery, + [CanBeNull] LambdaExpression inMemoryQuery, bool fromDataAnnotation = false) => (LambdaExpression)Check.NotNull(entityType, nameof(entityType)) #pragma warning disable EF1001 // Internal EF Core API usage. #pragma warning disable CS0612 // Type or member is obsolete - .SetOrRemoveAnnotation(CoreAnnotationNames.DefiningQuery, definingQuery, fromDataAnnotation) + .SetOrRemoveAnnotation(CoreAnnotationNames.DefiningQuery, inMemoryQuery, fromDataAnnotation) #pragma warning restore CS0612 // Type or member is obsolete #pragma warning restore EF1001 // Internal EF Core API usage. ?.Value; /// - /// Returns the configuration source for . + /// Returns the configuration source for . /// /// The entity type. - /// The configuration source for . + /// The configuration source for . public static ConfigurationSource? GetDefiningQueryConfigurationSource([NotNull] this IConventionEntityType entityType) #pragma warning disable EF1001 // Internal EF Core API usage. #pragma warning disable CS0612 // Type or member is obsolete diff --git a/src/EFCore.InMemory/Internal/InMemoryModelValidator.cs b/src/EFCore.InMemory/Internal/InMemoryModelValidator.cs index fbb692ae0c3..0c319f941f0 100644 --- a/src/EFCore.InMemory/Internal/InMemoryModelValidator.cs +++ b/src/EFCore.InMemory/Internal/InMemoryModelValidator.cs @@ -54,7 +54,7 @@ protected virtual void ValidateDefiningQuery( foreach (var entityType in model.GetEntityTypes()) { - if (InMemoryEntityTypeExtensions.GetDefiningQuery(entityType) != null) + if (entityType.GetInMemoryQuery() != null) { if (entityType.BaseType != null) { diff --git a/src/EFCore.InMemory/Metadata/Conventions/DefiningQueryRewritingConvention.cs b/src/EFCore.InMemory/Metadata/Conventions/DefiningQueryRewritingConvention.cs index bdc72132fd5..a7ed83a164b 100644 --- a/src/EFCore.InMemory/Metadata/Conventions/DefiningQueryRewritingConvention.cs +++ b/src/EFCore.InMemory/Metadata/Conventions/DefiningQueryRewritingConvention.cs @@ -32,11 +32,10 @@ public override void ProcessModelFinalizing( { foreach (var entityType in modelBuilder.Metadata.GetEntityTypes()) { - var definingQuery = InMemoryEntityTypeExtensions.GetDefiningQuery(entityType); + var definingQuery = entityType.GetInMemoryQuery(); if (definingQuery != null) { - InMemoryEntityTypeExtensions.SetDefiningQuery( - entityType, (LambdaExpression)DbSetAccessRewriter.Rewrite(modelBuilder.Metadata, definingQuery)); + entityType.SetInMemoryQuery((LambdaExpression)DbSetAccessRewriter.Rewrite(modelBuilder.Metadata, definingQuery)); } } } diff --git a/src/EFCore.Relational/Extensions/RelationalEntityTypeBuilderExtensions.cs b/src/EFCore.Relational/Extensions/RelationalEntityTypeBuilderExtensions.cs index 5c20f511e6d..d9a1be22d6c 100644 --- a/src/EFCore.Relational/Extensions/RelationalEntityTypeBuilderExtensions.cs +++ b/src/EFCore.Relational/Extensions/RelationalEntityTypeBuilderExtensions.cs @@ -603,14 +603,14 @@ public static bool CanSetViewSchema( /// The builder for the entity type being configured. /// The SQL query that will provide the underlying data for the entity type. /// The same builder instance so that multiple calls can be chained. - public static EntityTypeBuilder ToQuerySql( + public static EntityTypeBuilder ToSqlQuery( [NotNull] this EntityTypeBuilder entityTypeBuilder, [NotNull] string query) where TEntity : class { Check.NotNull(query, nameof(query)); - entityTypeBuilder.Metadata.SetQuerySql(query); + entityTypeBuilder.Metadata.SetSqlQuery(query); return entityTypeBuilder; } @@ -624,16 +624,16 @@ public static EntityTypeBuilder ToQuerySql( /// /// The same builder instance if the configuration was applied, otherwise. /// - public static IConventionEntityTypeBuilder ToQuerySql( + public static IConventionEntityTypeBuilder ToSqlQuery( [NotNull] this IConventionEntityTypeBuilder entityTypeBuilder, [CanBeNull] string name, bool fromDataAnnotation = false) { - if (!entityTypeBuilder.CanSetQuerySql(name, fromDataAnnotation)) + if (!entityTypeBuilder.CanSetSqlQuery(name, fromDataAnnotation)) { return null; } var entityType = entityTypeBuilder.Metadata; - entityType.SetQuerySql(name, fromDataAnnotation); + entityType.SetSqlQuery(name, fromDataAnnotation); return entityTypeBuilder; } @@ -646,12 +646,12 @@ public static IConventionEntityTypeBuilder ToQuerySql( /// The SQL query that will provide the underlying data for the entity type. /// Indicates whether the configuration was specified using a data annotation. /// if the configuration can be applied. - public static bool CanSetQuerySql( + public static bool CanSetSqlQuery( [NotNull] this IConventionEntityTypeBuilder entityTypeBuilder, [CanBeNull] string name, bool fromDataAnnotation = false) { Check.NullButNotEmpty(name, nameof(name)); - return entityTypeBuilder.CanSetAnnotation(RelationalAnnotationNames.QuerySql, name, fromDataAnnotation); + return entityTypeBuilder.CanSetAnnotation(RelationalAnnotationNames.SqlQuery, name, fromDataAnnotation); } /// diff --git a/src/EFCore.Relational/Extensions/RelationalEntityTypeExtensions.cs b/src/EFCore.Relational/Extensions/RelationalEntityTypeExtensions.cs index a77277ccbaa..84138bfc529 100644 --- a/src/EFCore.Relational/Extensions/RelationalEntityTypeExtensions.cs +++ b/src/EFCore.Relational/Extensions/RelationalEntityTypeExtensions.cs @@ -42,7 +42,7 @@ public static string GetTableName([NotNull] this IEntityType entityType) #pragma warning disable CS0618 // Type or member is obsolete && ((entityType as IConventionEntityType)?.GetDefiningQueryConfigurationSource() == null) #pragma warning restore CS0618 // Type or member is obsolete - && ((entityType as IConventionEntityType)?.GetQuerySqlConfigurationSource() == null) + && ((entityType as IConventionEntityType)?.GetSqlQueryConfigurationSource() == null) ? GetDefaultTableName(entityType) : null; } @@ -263,7 +263,7 @@ public static string GetViewName([NotNull] this IEntityType entityType) #pragma warning disable CS0618 // Type or member is obsolete && (entityType as IConventionEntityType)?.GetDefiningQueryConfigurationSource() == null #pragma warning restore CS0618 // Type or member is obsolete - && ((entityType as IConventionEntityType)?.GetQuerySqlConfigurationSource() == null) + && ((entityType as IConventionEntityType)?.GetSqlQueryConfigurationSource() == null) ? GetDefaultViewName(entityType) : null; } @@ -402,7 +402,7 @@ public static IEnumerable GetViewMappings([NotNull] this IEntityTy /// /// Gets the default SQL query name that would be used for this entity type when mapped using - /// . + /// . /// /// The entity type. /// Gets the default SQL query name. @@ -414,9 +414,9 @@ public static string GetDefaultSqlQueryName([NotNull] this IEntityType entityTyp /// /// The entity type. /// The SQL string used to provide data for the entity type. - public static string GetQuerySql([NotNull] this IEntityType entityType) + public static string GetSqlQuery([NotNull] this IEntityType entityType) { - var nameAnnotation = (string)entityType[RelationalAnnotationNames.QuerySql]; + var nameAnnotation = (string)entityType[RelationalAnnotationNames.SqlQuery]; if (nameAnnotation != null) { return nameAnnotation; @@ -424,7 +424,7 @@ public static string GetQuerySql([NotNull] this IEntityType entityType) if (entityType.BaseType != null) { - return entityType.GetRootType().GetQuerySql(); + return entityType.GetRootType().GetSqlQuery(); } return null; @@ -435,9 +435,9 @@ public static string GetQuerySql([NotNull] this IEntityType entityType) /// /// The entity type. /// The SQL string to set. - public static void SetQuerySql([NotNull] this IMutableEntityType entityType, [CanBeNull] string name) + public static void SetSqlQuery([NotNull] this IMutableEntityType entityType, [CanBeNull] string name) => entityType.SetAnnotation( - RelationalAnnotationNames.QuerySql, + RelationalAnnotationNames.SqlQuery, Check.NullButNotEmpty(name, nameof(name))); /// @@ -447,10 +447,10 @@ public static void SetQuerySql([NotNull] this IMutableEntityType entityType, [Ca /// The SQL string to set. /// Indicates whether the configuration was specified using a data annotation. /// The configured value. - public static string SetQuerySql( + public static string SetSqlQuery( [NotNull] this IConventionEntityType entityType, [CanBeNull] string name, bool fromDataAnnotation = false) => (string)entityType.SetAnnotation( - RelationalAnnotationNames.QuerySql, + RelationalAnnotationNames.SqlQuery, Check.NullButNotEmpty(name, nameof(name)), fromDataAnnotation)?.Value; @@ -459,8 +459,8 @@ public static string SetQuerySql( /// /// The entity type to find configuration source for. /// The for the query SQL string. - public static ConfigurationSource? GetQuerySqlConfigurationSource([NotNull] this IConventionEntityType entityType) - => entityType.FindAnnotation(RelationalAnnotationNames.QuerySql) + public static ConfigurationSource? GetSqlQueryConfigurationSource([NotNull] this IConventionEntityType entityType) + => entityType.FindAnnotation(RelationalAnnotationNames.SqlQuery) ?.GetConfigurationSource(); /// diff --git a/src/EFCore.Relational/Infrastructure/RelationalModelValidator.cs b/src/EFCore.Relational/Infrastructure/RelationalModelValidator.cs index 6a3d944df94..83d9bc6027a 100644 --- a/src/EFCore.Relational/Infrastructure/RelationalModelValidator.cs +++ b/src/EFCore.Relational/Infrastructure/RelationalModelValidator.cs @@ -76,7 +76,7 @@ protected virtual void ValidateSqlQueries( { foreach (var entityType in model.GetEntityTypes()) { - var sqlQuery = entityType.GetQuerySql(); + var sqlQuery = entityType.GetSqlQuery(); if (sqlQuery == null) { continue; @@ -84,7 +84,7 @@ protected virtual void ValidateSqlQueries( if (entityType.BaseType != null && (entityType.GetDiscriminatorProperty() == null - || sqlQuery != entityType.BaseType.GetQuerySql())) + || sqlQuery != entityType.BaseType.GetSqlQuery())) { throw new InvalidOperationException( RelationalStrings.InvalidMappedSqlQueryDerivedType( diff --git a/src/EFCore.Relational/Metadata/Internal/RelationalModel.cs b/src/EFCore.Relational/Metadata/Internal/RelationalModel.cs index bbd6b61c135..36185ab5b62 100644 --- a/src/EFCore.Relational/Metadata/Internal/RelationalModel.cs +++ b/src/EFCore.Relational/Metadata/Internal/RelationalModel.cs @@ -481,8 +481,8 @@ private static void AddViews(RelationalModel databaseModel, IConventionEntityTyp private static void AddSqlQueries(RelationalModel databaseModel, IConventionEntityType entityType) { - var querySql = entityType.GetQuerySql(); - if (querySql == null) + var entityTypeSqlQuery = entityType.GetSqlQuery(); + if (entityTypeSqlQuery == null) { return; } @@ -491,10 +491,10 @@ private static void AddSqlQueries(RelationalModel databaseModel, IConventionEnti var definingType = entityType; while (definingType != null) { - var mappedSql = definingType.GetQuerySql(); - if (mappedSql == null + var definingTypeSqlQuery = definingType.GetSqlQuery(); + if (definingTypeSqlQuery == null || definingType.BaseType == null - || (mappedSql == querySql + || (definingTypeSqlQuery == entityTypeSqlQuery && definingType != entityType)) { break; @@ -506,9 +506,9 @@ private static void AddSqlQueries(RelationalModel databaseModel, IConventionEnti var mappedType = entityType; while (mappedType != null) { - var mappedSql = mappedType.GetQuerySql(); - if (mappedSql == null - || (mappedSql == querySql + var mappedTypeSqlQuery = mappedType.GetSqlQuery(); + if (mappedTypeSqlQuery == null + || (mappedTypeSqlQuery == entityTypeSqlQuery && mappedType != entityType)) { break; @@ -517,8 +517,10 @@ private static void AddSqlQueries(RelationalModel databaseModel, IConventionEnti var mappedQuery = StoreObjectIdentifier.SqlQuery(definingType); if (!databaseModel.Queries.TryGetValue(mappedQuery.Name, out var sqlQuery)) { - sqlQuery = new SqlQuery(mappedQuery.Name, databaseModel); - sqlQuery.Sql = mappedSql; + sqlQuery = new SqlQuery(mappedQuery.Name, databaseModel) + { + Sql = mappedTypeSqlQuery + }; databaseModel.Queries.Add(mappedQuery.Name, sqlQuery); } diff --git a/src/EFCore.Relational/Metadata/RelationalAnnotationNames.cs b/src/EFCore.Relational/Metadata/RelationalAnnotationNames.cs index c75a9274149..dbd82d5fd08 100644 --- a/src/EFCore.Relational/Metadata/RelationalAnnotationNames.cs +++ b/src/EFCore.Relational/Metadata/RelationalAnnotationNames.cs @@ -72,9 +72,9 @@ public static class RelationalAnnotationNames public const string FunctionName = Prefix + "FunctionName"; /// - /// The name for mapped query sql annotations. + /// The name for mapped sql query annotations. /// - public const string QuerySql = Prefix + "QuerySql"; + public const string SqlQuery = Prefix + "SqlQuery"; /// /// The name for comment annotations. @@ -154,12 +154,12 @@ public static class RelationalAnnotationNames public const string RelationalModel = Prefix + "RelationalModel"; /// - /// The name for view mappings annotations. + /// The name for default mappings annotations. /// public const string DefaultMappings = Prefix + "DefaultMappings"; /// - /// The name for view column mappings annotations. + /// The name for default column mappings annotations. /// public const string DefaultColumnMappings = Prefix + "DefaultColumnMappings"; @@ -184,22 +184,22 @@ public static class RelationalAnnotationNames public const string ViewColumnMappings = Prefix + "ViewColumnMappings"; /// - /// The name for view mappings annotations. + /// The name for function mappings annotations. /// public const string FunctionMappings = Prefix + "FunctionMappings"; /// - /// The name for view column mappings annotations. + /// The name for function column mappings annotations. /// public const string FunctionColumnMappings = Prefix + "FunctionColumnMappings"; /// - /// The name for view mappings annotations. + /// The name for sql query mappings annotations. /// public const string SqlQueryMappings = Prefix + "SqlQueryMappings"; /// - /// The name for view column mappings annotations. + /// The name for sql query column mappings annotations. /// public const string SqlQueryColumnMappings = Prefix + "SqlQueryColumnMappings"; diff --git a/src/EFCore.Relational/Metadata/SqlQueryExtensions.cs b/src/EFCore.Relational/Metadata/SqlQueryExtensions.cs index 9bc22cf03b5..1b4407f2a83 100644 --- a/src/EFCore.Relational/Metadata/SqlQueryExtensions.cs +++ b/src/EFCore.Relational/Metadata/SqlQueryExtensions.cs @@ -15,7 +15,7 @@ public static class SqlQueryExtensions { /// /// Gets the name used for the mapped using - /// . + /// . /// public static readonly string DefaultQueryNameBase = "MappedSqlQuery"; diff --git a/src/EFCore.Relational/Metadata/StoreObjectIdentifier.cs b/src/EFCore.Relational/Metadata/StoreObjectIdentifier.cs index 5bd5c302171..734ea2cde0f 100644 --- a/src/EFCore.Relational/Metadata/StoreObjectIdentifier.cs +++ b/src/EFCore.Relational/Metadata/StoreObjectIdentifier.cs @@ -39,7 +39,7 @@ public static StoreObjectIdentifier View([NotNull] string name, [CanBeNull] stri } /// - /// Creates an id for the SQL query mapped using . + /// Creates an id for the SQL query mapped using . /// /// The entity type. /// The SQL query id. diff --git a/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs b/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs index 30ea9c5f5eb..6baf1a7b41c 100644 --- a/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs +++ b/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs @@ -135,9 +135,9 @@ protected override Expression VisitExtension(Expression extensionExpression) return CreateShapedQueryExpression(entityType, queryExpression); case QueryRootExpression queryRootExpression - when queryRootExpression.EntityType.GetSqlQueryMappings().FirstOrDefault(m => m.IsDefaultSqlQueryMapping)?.SqlQuery is ISqlQuery querySql: + when queryRootExpression.EntityType.GetSqlQueryMappings().FirstOrDefault(m => m.IsDefaultSqlQueryMapping)?.SqlQuery is ISqlQuery sqlQuery: return Visit(new FromSqlQueryRootExpression( - queryRootExpression.EntityType, querySql.Sql, Expression.Constant(Array.Empty(), typeof(object[])))); + queryRootExpression.EntityType, sqlQuery.Sql, Expression.Constant(Array.Empty(), typeof(object[])))); default: return base.VisitExtension(extensionExpression); diff --git a/src/EFCore/Extensions/ConventionEntityTypeExtensions.cs b/src/EFCore/Extensions/ConventionEntityTypeExtensions.cs index 35f76e856d8..cb129c97e0d 100644 --- a/src/EFCore/Extensions/ConventionEntityTypeExtensions.cs +++ b/src/EFCore/Extensions/ConventionEntityTypeExtensions.cs @@ -640,7 +640,7 @@ public static LambdaExpression SetQueryFilter( /// The LINQ query used as the default source. /// Indicates whether the configuration was specified using a data annotation. /// The configured entity type. - [Obsolete("Use InMemoryEntityTypeExtensions.SetDefiningQuery")] + [Obsolete("Use InMemoryEntityTypeExtensions.SetInMemoryQuery")] public static LambdaExpression SetDefiningQuery( [NotNull] this IConventionEntityType entityType, [CanBeNull] LambdaExpression definingQuery, @@ -655,7 +655,7 @@ public static LambdaExpression SetDefiningQuery( /// /// The entity type. /// The configuration source for . - [Obsolete("Use InMemoryEntityTypeExtensions.GetDefiningQueryConfigurationSource")] + [Obsolete("Use InMemoryEntityTypeExtensions.GetInMemoryQueryConfigurationSource")] public static ConfigurationSource? GetDefiningQueryConfigurationSource([NotNull] this IConventionEntityType entityType) => entityType.FindAnnotation(CoreAnnotationNames.DefiningQuery)?.GetConfigurationSource(); diff --git a/src/EFCore/Extensions/EntityTypeExtensions.cs b/src/EFCore/Extensions/EntityTypeExtensions.cs index 959828a3fc4..26440f9ace8 100644 --- a/src/EFCore/Extensions/EntityTypeExtensions.cs +++ b/src/EFCore/Extensions/EntityTypeExtensions.cs @@ -730,7 +730,7 @@ public static LambdaExpression GetQueryFilter([NotNull] this IEntityType entityT /// /// The entity type to get the defining query for. /// The LINQ query used as the default source. - [Obsolete("Use InMemoryEntityTypeExtensions.GetDefiningQuery")] + [Obsolete("Use InMemoryEntityTypeExtensions.GetInMemoryQuery")] public static LambdaExpression GetDefiningQuery([NotNull] this IEntityType entityType) { Check.NotNull(entityType, nameof(entityType)); diff --git a/src/EFCore/Extensions/MutableEntityTypeExtensions.cs b/src/EFCore/Extensions/MutableEntityTypeExtensions.cs index f9e974c3687..b56814b31b5 100644 --- a/src/EFCore/Extensions/MutableEntityTypeExtensions.cs +++ b/src/EFCore/Extensions/MutableEntityTypeExtensions.cs @@ -556,7 +556,7 @@ public static void SetQueryFilter( /// /// The entity type. /// The LINQ query used as the default source. - [Obsolete("Use InMemoryEntityTypeExtensions.SetDefiningQuery")] + [Obsolete("Use InMemoryEntityTypeExtensions.SetInMemoryQuery")] public static void SetDefiningQuery( [NotNull] this IMutableEntityType entityType, [CanBeNull] LambdaExpression definingQuery) diff --git a/src/EFCore/Metadata/Builders/EntityTypeBuilder`.cs b/src/EFCore/Metadata/Builders/EntityTypeBuilder`.cs index 5c9ba6df4bf..bcb0355f95c 100644 --- a/src/EFCore/Metadata/Builders/EntityTypeBuilder`.cs +++ b/src/EFCore/Metadata/Builders/EntityTypeBuilder`.cs @@ -206,7 +206,7 @@ public virtual EntityTypeBuilder HasQueryFilter([CanBeNull] Expression< /// /// The query that will provide the underlying data for the keyless entity type. /// The same builder instance so that multiple calls can be chained. - [Obsolete("Use InMemoryEntityTypeBuilderExtensions.ToQuery")] + [Obsolete("Use InMemoryEntityTypeBuilderExtensions.ToInMemoryQuery")] public virtual EntityTypeBuilder ToQuery([NotNull] Expression>> query) { Check.NotNull(query, nameof(query)); diff --git a/src/EFCore/Metadata/Builders/IConventionEntityTypeBuilder.cs b/src/EFCore/Metadata/Builders/IConventionEntityTypeBuilder.cs index 920b07c2cb1..c89878075a7 100644 --- a/src/EFCore/Metadata/Builders/IConventionEntityTypeBuilder.cs +++ b/src/EFCore/Metadata/Builders/IConventionEntityTypeBuilder.cs @@ -689,7 +689,7 @@ IConventionSkipNavigationBuilder HasSkipNavigation( /// /// The same builder instance if the query was set, otherwise. /// - [Obsolete("Use InMemoryEntityTypeBuilderExtensions.ToQuery")] + [Obsolete("Use InMemoryEntityTypeBuilderExtensions.ToInMemoryQuery")] IConventionEntityTypeBuilder HasDefiningQuery([CanBeNull] LambdaExpression query, bool fromDataAnnotation = false); /// @@ -698,7 +698,7 @@ IConventionSkipNavigationBuilder HasSkipNavigation( /// The query that will provide the underlying data for the keyless entity type. /// Indicates whether the configuration was specified using a data annotation. /// if the given defining query can be set. - [Obsolete("Use InMemoryEntityTypeBuilderExtensions.CanSetDefiningQuery")] + [Obsolete("Use InMemoryEntityTypeBuilderExtensions.CanSetInMemoryQuery")] bool CanSetDefiningQuery([CanBeNull] LambdaExpression query, bool fromDataAnnotation = false); /// diff --git a/src/EFCore/Metadata/Conventions/QueryFilterRewritingConvention.cs b/src/EFCore/Metadata/Conventions/QueryFilterRewritingConvention.cs index 55a4d65626d..cd981942a52 100644 --- a/src/EFCore/Metadata/Conventions/QueryFilterRewritingConvention.cs +++ b/src/EFCore/Metadata/Conventions/QueryFilterRewritingConvention.cs @@ -12,7 +12,7 @@ namespace Microsoft.EntityFrameworkCore.Metadata.Conventions { /// - /// Convention that converts accesses of inside query filters and defining queries into . + /// Convention that converts accesses of inside query filters into . /// This makes them consistent with how DbSet accesses in the actual queries are represented, which allows for easier processing in the /// query pipeline. /// @@ -34,7 +34,7 @@ public QueryFilterRewritingConvention([NotNull] ProviderConventionSetBuilderDepe protected virtual ProviderConventionSetBuilderDependencies Dependencies { get; } /// - /// Visitor used to rewrite accesses encountered in query filters and defining queries to . + /// Visitor used to rewrite accesses encountered in query filters to . /// protected virtual DbSetAccessRewritingExpressionVisitor DbSetAccessRewriter { get; [param: NotNull] set; } @@ -54,7 +54,7 @@ public virtual void ProcessModelFinalizing( } /// - /// A visitor that rewrites DbSet accesses encountered in query filters and defining queries to . + /// A visitor that rewrites DbSet accesses encountered in an expression to . /// protected class DbSetAccessRewritingExpressionVisitor : ExpressionVisitor { @@ -71,10 +71,10 @@ public DbSetAccessRewritingExpressionVisitor(Type contextType) } /// - /// Rewrites DbSet accesses encountered in query filters and defining queries to . + /// Rewrites DbSet accesses encountered in the expression to . /// /// The model to look for entity types. - /// The query filter or defining query expression to rewrite. + /// The query expression to rewrite. public Expression Rewrite(IModel model, Expression expression) { _model = model; diff --git a/test/EFCore.InMemory.FunctionalTests/Query/InheritanceQueryInMemoryFixture.cs b/test/EFCore.InMemory.FunctionalTests/Query/InheritanceQueryInMemoryFixture.cs index 08641a3d4d3..9241b804dae 100644 --- a/test/EFCore.InMemory.FunctionalTests/Query/InheritanceQueryInMemoryFixture.cs +++ b/test/EFCore.InMemory.FunctionalTests/Query/InheritanceQueryInMemoryFixture.cs @@ -21,9 +21,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con { base.OnModelCreating(modelBuilder, context); - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder.Entity().HasNoKey(), - () => context.Set().Select(b => MaterializeView(b))); + modelBuilder.Entity().ToInMemoryQuery(() => context.Set().Select(b => MaterializeView(b))); } private static AnimalQuery MaterializeView(Bird bird) diff --git a/test/EFCore.InMemory.FunctionalTests/Query/NorthwindInMemoryContext.cs b/test/EFCore.InMemory.FunctionalTests/Query/NorthwindInMemoryContext.cs index a8bbf485b5a..457b7226393 100644 --- a/test/EFCore.InMemory.FunctionalTests/Query/NorthwindInMemoryContext.cs +++ b/test/EFCore.InMemory.FunctionalTests/Query/NorthwindInMemoryContext.cs @@ -17,8 +17,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder.Entity(), + modelBuilder.Entity().ToInMemoryQuery( () => Customers.Select( c => new CustomerQuery { @@ -29,12 +28,10 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) ContactTitle = c.ContactTitle })); - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder.Entity(), + modelBuilder.Entity().ToInMemoryQuery( () => Orders.Select(o => new OrderQuery { CustomerID = o.CustomerID })); - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder.Entity(), + modelBuilder.Entity().ToInMemoryQuery( () => Products.Where(p => !p.Discontinued) .Select( p => new ProductQuery @@ -44,8 +41,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) CategoryName = "Food" })); - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder.Entity(), + modelBuilder.Entity().ToInMemoryQuery( () => Customers.Select( c => new CustomerQueryWithQueryFilter { diff --git a/test/EFCore.InMemory.FunctionalTests/Query/QueryBugsInMemoryTest.cs b/test/EFCore.InMemory.FunctionalTests/Query/QueryBugsInMemoryTest.cs index 0a7e52125a8..dc56b21ad49 100644 --- a/test/EFCore.InMemory.FunctionalTests/Query/QueryBugsInMemoryTest.cs +++ b/test/EFCore.InMemory.FunctionalTests/Query/QueryBugsInMemoryTest.cs @@ -709,8 +709,7 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder) { - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder.Entity().HasNoKey(), Build_Customers_Sql_View_InMemory()); + modelBuilder.Entity().HasNoKey().ToInMemoryQuery(Build_Customers_Sql_View_InMemory()); } private Expression>> Build_Customers_Sql_View_InMemory() diff --git a/test/EFCore.InMemory.FunctionalTests/WithConstructorsInMemoryTest.cs b/test/EFCore.InMemory.FunctionalTests/WithConstructorsInMemoryTest.cs index 29c90ed5bc9..2d189cc3867 100644 --- a/test/EFCore.InMemory.FunctionalTests/WithConstructorsInMemoryTest.cs +++ b/test/EFCore.InMemory.FunctionalTests/WithConstructorsInMemoryTest.cs @@ -32,10 +32,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con { base.OnModelCreating(modelBuilder, context); - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder - .Entity() - .HasNoKey(), + modelBuilder.Entity().HasNoKey().ToInMemoryQuery( () => context.Set().Select(b => new BlogQuery(b.Title, b.MonthlyRevenue))); } } diff --git a/test/EFCore.InMemory.Tests/Infrastructure/InMemoryModelValidatorTest.cs b/test/EFCore.InMemory.Tests/Infrastructure/InMemoryModelValidatorTest.cs index 57ac3e1c60d..0d287fcd3fc 100644 --- a/test/EFCore.InMemory.Tests/Infrastructure/InMemoryModelValidatorTest.cs +++ b/test/EFCore.InMemory.Tests/Infrastructure/InMemoryModelValidatorTest.cs @@ -14,10 +14,8 @@ public virtual void Detects_ToQuery_on_derived_keyless_types() { var modelBuilder = base.CreateConventionalModelBuilder(); var context = new DbContext(new DbContextOptions()); - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder.Entity().HasNoKey(), () => context.Set()); - InMemoryEntityTypeBuilderExtensions.ToQuery( - modelBuilder.Entity>(), () => context.Set>()); + modelBuilder.Entity().HasNoKey().ToInMemoryQuery(() => context.Set()); + modelBuilder.Entity>().ToInMemoryQuery(() => context.Set>()); VerifyError( CoreStrings.DerivedTypeDefiningQuery("Generic", nameof(Abstract)), diff --git a/test/EFCore.Relational.Specification.Tests/Query/InheritanceQueryRelationalFixture.cs b/test/EFCore.Relational.Specification.Tests/Query/InheritanceQueryRelationalFixture.cs index baabec3108c..0a9df9b8115 100644 --- a/test/EFCore.Relational.Specification.Tests/Query/InheritanceQueryRelationalFixture.cs +++ b/test/EFCore.Relational.Specification.Tests/Query/InheritanceQueryRelationalFixture.cs @@ -32,7 +32,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con modelBuilder.Entity().Property(e => e.SugarGrams).HasColumnName("SugarGrams"); modelBuilder.Entity().Property(e => e.CaffeineGrams).HasColumnName("CaffeineGrams"); - modelBuilder.Entity().HasNoKey().ToQuerySql("SELECT * FROM Animals"); + modelBuilder.Entity().HasNoKey().ToSqlQuery("SELECT * FROM Animals"); modelBuilder.Entity().HasDiscriminator().HasValue("Kiwi"); modelBuilder.Entity().HasDiscriminator().HasValue("Eagle"); } diff --git a/test/EFCore.Relational.Specification.Tests/TestModels/Northwind/NorthwindRelationalContext.cs b/test/EFCore.Relational.Specification.Tests/TestModels/Northwind/NorthwindRelationalContext.cs index 593dcab6692..3445ea12923 100644 --- a/test/EFCore.Relational.Specification.Tests/TestModels/Northwind/NorthwindRelationalContext.cs +++ b/test/EFCore.Relational.Specification.Tests/TestModels/Northwind/NorthwindRelationalContext.cs @@ -26,9 +26,9 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.Entity().HasKey(coh => coh.ProductName); modelBuilder.Entity().HasKey(mep => mep.TenMostExpensiveProducts); - modelBuilder.Entity().ToQuerySql("SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] FROM [Customers] AS [c]"); + modelBuilder.Entity().ToSqlQuery("SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] FROM [Customers] AS [c]"); - modelBuilder.Entity().ToQuerySql(@"select * from ""Orders"""); + modelBuilder.Entity().ToSqlQuery(@"select * from ""Orders"""); modelBuilder.Entity().ToView("Alphabetical list of products"); } } diff --git a/test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs b/test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs index 0ee408ff6e8..747168180f9 100644 --- a/test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs +++ b/test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs @@ -618,7 +618,7 @@ public void Can_use_relational_model_with_SQL_queries() var modelBuilder = CreateConventionModelBuilder(); modelBuilder.Entity(cb => { - cb.ToQuerySql("GetOrders()"); + cb.ToSqlQuery("GetOrders()"); cb.Ignore(c => c.Customer); cb.Ignore(c => c.Details); cb.Ignore(c => c.DateDetails); diff --git a/test/EFCore.Relational.Tests/Migrations/Internal/MigrationsModelDifferTest.cs b/test/EFCore.Relational.Tests/Migrations/Internal/MigrationsModelDifferTest.cs index d27216f4f5f..d2aabff2c40 100644 --- a/test/EFCore.Relational.Tests/Migrations/Internal/MigrationsModelDifferTest.cs +++ b/test/EFCore.Relational.Tests/Migrations/Internal/MigrationsModelDifferTest.cs @@ -77,7 +77,7 @@ public void Model_differ_does_not_detect_queries() { Execute( _ => { }, - modelBuilder => modelBuilder.Entity().HasNoKey().ToQuerySql("SELECT * FROM Vista"), + modelBuilder => modelBuilder.Entity().HasNoKey().ToSqlQuery("SELECT * FROM Vista"), result => Assert.Empty(result)); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/QueryBugsTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/QueryBugsTest.cs index 8d1b1291209..a53abb3d39a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/QueryBugsTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/QueryBugsTest.cs @@ -4436,7 +4436,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasNoKey() - .ToQuerySql("SELECT o.Amount From Orders AS o"); + .ToSqlQuery("SELECT o.Amount From Orders AS o"); } } diff --git a/test/EFCore.SqlServer.FunctionalTests/WithConstructorsSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/WithConstructorsSqlServerTest.cs index 6f10c9b3a82..90f2e4fe818 100644 --- a/test/EFCore.SqlServer.FunctionalTests/WithConstructorsSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/WithConstructorsSqlServerTest.cs @@ -25,7 +25,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con { base.OnModelCreating(modelBuilder, context); - modelBuilder.Entity().HasNoKey().ToQuerySql("SELECT * FROM Blog"); + modelBuilder.Entity().HasNoKey().ToSqlQuery("SELECT * FROM Blog"); } } } diff --git a/test/EFCore.Sqlite.FunctionalTests/WithConstructorsSqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/WithConstructorsSqliteTest.cs index 6e950d01a8f..bd02c4c6aa9 100644 --- a/test/EFCore.Sqlite.FunctionalTests/WithConstructorsSqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/WithConstructorsSqliteTest.cs @@ -25,7 +25,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con { base.OnModelCreating(modelBuilder, context); - modelBuilder.Entity().HasNoKey().ToQuerySql("SELECT * FROM Blog"); + modelBuilder.Entity().HasNoKey().ToSqlQuery("SELECT * FROM Blog"); } } }