Skip to content

9.0 API Reviews  #33220

@AndriySvyryd

Description

@AndriySvyryd

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

  • @ajcvickers Review whether we really need MigrationsSqlGenerator.SequenceOptions overload with forAlter. Move logic to other methods otherwise. - No longer applies
  • @ajcvickers Remove 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

Mar 25

  • @ajcvickers Review MigrationsSqlGenerator.KeyWithOptions
  • @roji Rename RelationalExpressionQuotingUtilities.VisitOrNull to QuoteOrNull (#33420)
  • @roji Make the consts in RelationalQueryableMethodTranslatingExpressionVisitor static readonly instead Decided that pubternal consts are OK
  • @roji Expose the constructor parameters as properties instead of Model in RelationalTypeMappingPostprocessor (#33420)

Apr 3

  • @ajcvickers Rename TConcreteCollection to TConcreteList for ListOf*Comparer
  • @ajcvickers Consider sealing JsonCollection*ReaderWriter classes

May 13

  • @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.ParametersToConstantize ISet<string>
  • @cincuranet Make RelationalParameterBasedSqlProcessorParameters.ParametersToConstantize and SqlNullabilityProcessor.ParametersToConstantize IReadOnlySet<string>
  • @cincuranet Name the new property ParametersToNotConstantize

Metadata

Metadata

Assignees

No one assigned
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions