You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a team, we periodically review changes made to the public API. This issue tracks follow-up items that come out of those reviews for the 9.0 release.
Feb 9
@ajcvickers Change exceptionMessage parameter in CoreLoggerExtensions.TypeLoadingErrorWarning to be an Exception if possible
Mar 8
@ajcvickersReview whether we really need MigrationsSqlGenerator.SequenceOptions overload with forAlter. Move logic to other methods otherwise. - No longer applies
@ajcvickersRemove IReadOnlySequence.IsCached. CacheSize of 0 or 1, indicates no caching, all other non-null values indicate caching - No longer applies
@roji Move ISqlExpressionFactory.TryCreateLeast and TryCreateGreatest to a different method, because SQL Server-specific (#32458).
@roji Rename QuerySqlGenerator.GenerateProjection to GenerateFrom (#33388).
@roji Rename QuerySqlGenerator.GenerateTables to something more specific (#33388)
@roji Review inferredTypeMappings in RelationalQueryableMethodTranslatingExpressionVisitor.ApplyInferredTypeMappings
Not sure if there was a specific problem we discussed here (I'll try to address these closer to the design discussions...), but I went through the code and things seem OK to me...
@roji Move out RelationalInferredTypeMappingApplier and use parameter object (#33308).
@roji Update docs on ISqlAliasManagerFactory with lifetime and make it pubternal, together with SqlAliasManager (#33388)
@roji Throw if SqlAliasManager.GenerateTableAlias is called after PostprocessAliases (#33388) See this comment
@roji Make SqlAliasManager.RemapTableAliases protected (#33388)
@roji Fix SqlTreePruner docs, make CurrentTableAlias and PruneSelect pubternal. Rename PruneToplevelSelect to PruneTopLevelSelect (#33388)
Mar 15
@ajcvickers Replace IUpdateEntry.GetOriginalOrCurrentValue with HasOriginalValue
@ajcvickers Obsolete the old CosmosQueryableExtensions.WithPartitionKey overload
@ajcvickers Ensure PartitionKey is appropriate for diagnostics
@maumar Change ReplacingExpressionVisitor.Replace to IReadOnlyList<Expression> parameters
July 8
@maumar Make ReaderColumn.GetFieldValueExpression and the new constructor experimental. Add the old constructor. adding old ctor creates ambiguity
@maumar Make ReaderColumn.Create experimental. Add the old overload. adding old overload creates ambiguity
@maumar Make ReaderColumn<T> constructor experimental. Add the old constructor. adding old ctor creates ambiguity
July 10
@cincuranet Mark EntityFrameworkMetricsData.Get* methods pubternal if they are not expected to be called by providers
@roji Is it appropriate to call ExpressionExtensions.CreateEFPropertyExpression without an IProperty?
I'm not sure of the context here, but the only place this is done is this hack in Cosmos; the usage is internal (with the warning suppressed), and we'd remove it once nav expansion stops messing up the query tree... So I don't think we really need to do anything here at the moment.
@roji Move IPrecompiledQueryCodeGeneratorSelector to Microsoft.EntityFrameworkCore.Design
Moving to MS.EF.Query instead for now, as that's where all the (internal) precompiled query stuff currently lives (inside the Design package). Will bring to design to confirm.
@ajcvickers Remove EntityMaterializerSource from QueryContext and QueryContextDependencies
August 5
@ajcvickers Rename AlwaysCreateShadowIdProperty to HasShadowId and HasShadowIds (on the model builder)
@ajcvickers Rename IncludeDiscriminatorInJsonId to HasDiscriminatorInJsonId and HasDiscriminatorInJsonIds. Same for the related methods
@ajcvickers Rename DiscriminatorInKeyBehavior to IdDiscriminatorMode and move it to Microsoft.EntityFrameworkCore.Metadata
@ajcvickers Rename DiscriminatorInKeyBehavior.(Root)EntityTypeName to (Root)EntityType
@ajcvickers Move ETagPropertyConvention to Microsoft.EntityFrameworkCore.Metadata.Conventions
August 6
@ajcvickers Consider merging CosmosKeyAugmenterConvention with CosmosKeyDiscoveryConvention, otherwise propose a better name for it.
August 9
@ajcvickers Check why the obsolete methods on RelationalSqlTranslatingExpressionVisitor haven't been removed in the initial pass
@AndriySvyryd Add an overload of Migrate(Async) with just targetMigration
@AndriySvyryd Type the seed argument as Action<DbContext, SeederParameters> and move them to UseSeeding and UseAsyncSeeding on DbContextOptionsBuilder
@AndriySvyryd Remove IMigratorPlugin and IMigratorData
@roji Rename existingExpr in ISqlExpressionFactory.Case to existingExpression (#34408)
August 12
@roji Make SelectExpression.set_IsDistinct private
Checked and this isn't possible - we set IsDistinct=false from RelationalQueryableMethodTranslatingExpressionVisitor. Given that it's already possible to mutate SelectExpression in many other ways - even if currently via methods rather than directly - I think this is fine. I hope we make it immutable "soon" anyway...
@cincuranet Rename SqlEngineDbContextOptionsBuilder.TryEnableRetryOnFailure to EnableRetryOnFailureByDefault
@cincuranet Make QueryCompilationContext.ParametersToConstantizeISet<string>
@cincuranet Make RelationalParameterBasedSqlProcessorParameters.ParametersToConstantize and SqlNullabilityProcessor.ParametersToConstantizeIReadOnlySet<string>
@cincuranet Name the new property ParametersToNotConstantize
As a team, we periodically review changes made to the public API. This issue tracks follow-up items that come out of those reviews for the 9.0 release.
Feb 9
exceptionMessageparameter inCoreLoggerExtensions.TypeLoadingErrorWarningto be anExceptionif possibleMar 8
Review whether we really need- No longer appliesMigrationsSqlGenerator.SequenceOptionsoverload withforAlter. Move logic to other methods otherwise.Remove- No longer appliesIReadOnlySequence.IsCached.CacheSizeof0or1, indicates no caching, all other non-nullvalues indicate cachingISqlExpressionFactory.TryCreateLeastandTryCreateGreatestto a different method, because SQL Server-specific (#32458).QuerySqlGenerator.GenerateProjectiontoGenerateFrom(#33388).QuerySqlGenerator.GenerateTablesto something more specific (#33388)inferredTypeMappingsinRelationalQueryableMethodTranslatingExpressionVisitor.ApplyInferredTypeMappingsRelationalInferredTypeMappingApplierand use parameter object (#33308).ISqlAliasManagerFactorywith lifetime and make it pubternal, together withSqlAliasManager(#33388)@roji Throw ifSee this commentSqlAliasManager.GenerateTableAliasis called afterPostprocessAliases(#33388)SqlAliasManager.RemapTableAliasesprotected (#33388)SqlTreePrunerdocs, makeCurrentTableAliasandPruneSelectpubternal. RenamePruneToplevelSelecttoPruneTopLevelSelect(#33388)Mar 15
IUpdateEntry.GetOriginalOrCurrentValuewithHasOriginalValueMar 25
MigrationsSqlGenerator.KeyWithOptionsRelationalExpressionQuotingUtilities.VisitOrNulltoQuoteOrNull(#33420)@roji Make the consts inDecided that pubternal consts are OKRelationalQueryableMethodTranslatingExpressionVisitorstatic readonlyinsteadModelinRelationalTypeMappingPostprocessor(#33420)Apr 3
TConcreteCollectiontoTConcreteListforListOf*ComparerJsonCollection*ReaderWriterclassesMay 13
CosmosQueryableExtensions.WithPartitionKeyoverloadPartitionKeyis appropriate for diagnosticsReplacingExpressionVisitor.ReplacetoIReadOnlyList<Expression>parametersJuly 8
ReaderColumn.GetFieldValueExpressionand the new constructor experimental.Add the old constructor.adding old ctor creates ambiguityReaderColumn.Createexperimental.Add the old overload.adding old overload creates ambiguityReaderColumn<T>constructor experimental.Add the old constructor.adding old ctor creates ambiguityJuly 10
ExpressionExtensions.CreateEFPropertyExpressionwithout anIProperty?IPrecompiledQueryCodeGeneratorSelectortoMicrosoft.EntityFrameworkCore.DesignEntityMaterializerSourcefromQueryContextandQueryContextDependenciesAugust 5
AlwaysCreateShadowIdPropertytoHasShadowIdandHasShadowIds(on the model builder)IncludeDiscriminatorInJsonIdtoHasDiscriminatorInJsonIdandHasDiscriminatorInJsonIds. Same for the related methodsDiscriminatorInKeyBehaviortoIdDiscriminatorModeand move it toMicrosoft.EntityFrameworkCore.MetadataDiscriminatorInKeyBehavior.(Root)EntityTypeNameto(Root)EntityTypeETagPropertyConventiontoMicrosoft.EntityFrameworkCore.Metadata.ConventionsAugust 6
CosmosKeyAugmenterConventionwithCosmosKeyDiscoveryConvention, otherwise propose a better name for it.August 9
RelationalSqlTranslatingExpressionVisitorhaven't been removed in the initial passMigrate(Async)with justtargetMigrationseedargument asAction<DbContext, SeederParameters>and move them toUseSeedingandUseAsyncSeedingonDbContextOptionsBuilderIMigratorPluginandIMigratorDataexistingExprinISqlExpressionFactory.CasetoexistingExpression(#34408)August 12
SelectExpression.set_IsDistinctprivateSqlEngineDbContextOptionsBuilder.TryEnableRetryOnFailuretoEnableRetryOnFailureByDefaultQueryCompilationContext.ParametersToConstantizeISet<string>RelationalParameterBasedSqlProcessorParameters.ParametersToConstantizeandSqlNullabilityProcessor.ParametersToConstantizeIReadOnlySet<string>ParametersToNotConstantize