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

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions