Änderungen mit Auswirkungen auf den AnbieterProvider-impacting changes

Diese Seite enthält Links zu Pull Requests, die auf dem EF Core-Repository vorgenommen werden, die möglicherweise von Autoren anderer Datenbankanbieter reagiert werden müssen.This page contains links to pull requests made on the EF Core repo that may require authors of other database providers to react. Die Absicht besteht darin, einen Ausgangspunkt für Autoren vorhandener Datenbankanbieter von Drittanbietern bereitzustellen, wenn der Anbieter auf eine neue Version aktualisiert wird.The intention is to provide a starting point for authors of existing third-party database providers when updating their provider to a new version.

Dieses Protokoll wird mit Änderungen von 2,1 bis 2,2 gestartet.We are starting this log with changes from 2.1 to 2.2. Vor 2,1 verwendeten wir die providers-beware Bezeichnungen und providers-fyi für unsere Probleme und Pull Requests.Prior to 2.1 we used the providers-beware and providers-fyi labels on our issues and pull requests.

2,2---> 3. x2.2 ---> 3.x

Beachten Sie, dass sich viele der wichtigen Änderungen auf Anwendungsebene auch auf Anbieter auswirken.Note that many of the application-level breaking changes will also impact providers.

  • https://github.com/dotnet/efcore/pull/14022
    • Veraltete veraltete APIs und reduzierte optionale Parameter Überladungen wurden entfernt.Removed obsolete APIs and collapsed optional parameter overloads
    • Databasecolumschlag. getunderlyingstoretype () wurde entfernt.Removed DatabaseColumn.GetUnderlyingStoreType()
  • https://github.com/dotnet/efcore/pull/14589
    • Veraltete APIs entferntRemoved obsolete APIs
  • https://github.com/dotnet/efcore/pull/15044
    • Unterklassen von chartypemapping wurden möglicherweise aufgrund von Verhaltensänderungen, die zum Beheben einiger Fehler in der Basis Implementierung erforderlich sind, beschädigt.Subclasses of CharTypeMapping may have been broken due to behavior changes required to fixing a couple bugs in the base implementation.
  • https://github.com/dotnet/efcore/pull/15090
    • Es wurde eine Basisklasse für idatabasemodelfactory hinzugefügt und zur Verwendung eines Parameter-Objekts aktualisiert, um zukünftige Unterbrechungen zu vermeiden.Added a base class for IDatabaseModelFactory and updated it to use a paramater object to mitigate future breaks.
  • https://github.com/dotnet/efcore/pull/15123
    • Verwenden Sie Parameter Objekte in migrationssqlgenerator, um zukünftige Unterbrechungen zu vermeiden.Used parameter objects in MigrationsSqlGenerator to mitigate future breaks.
  • https://github.com/dotnet/efcore/pull/14972
    • Die explizite Konfiguration von Protokolliergraden erforderte einige Änderungen an APIs, die von Anbietern möglicherweise verwendet werden.Explicit configuration of log levels required some changes to APIs that providers may be using. Insbesondere wenn Anbieter die Protokollierungs Infrastruktur direkt verwenden, kann diese Änderung die Verwendung von unterbrechen.Specifically, if providers are using the logging infrastructure directly, then this change may break that use. Außerdem müssen Anbieter, die die-Infrastruktur verwenden (die öffentlich sein wird), von oder abgeleitet werden LoggingDefinitions RelationalLoggingDefinitions .Also, Providers that use the infrastructure (which will be public) going forward will need to derive from LoggingDefinitions or RelationalLoggingDefinitions. Beispiele finden Sie in den SQL Server-und in-Memory-Anbietern.See the SQL Server and in-memory providers for examples.
  • https://github.com/dotnet/efcore/pull/15091
    • Die Ressourcen Zeichenfolgen Core, Relational und Abstraktionen sind jetzt öffentlich.Core, Relational, and Abstractions resource strings are now public.
    • CoreLoggerExtensions und RelationalLoggerExtensions sind jetzt öffentlich.CoreLoggerExtensions and RelationalLoggerExtensions are now public. Anbieter sollten diese APIs verwenden, wenn Sie Ereignisse protokollieren, die auf der Core-oder relationalen Ebene definiert sind.Providers should use these APIs when logging events that are defined at the core or relational level. Nicht direkt auf Protokoll Ressourcen zugreifen; Diese sind immer noch intern.Do not access logging resources directly; these are still internal.
    • IRawSqlCommandBuilder hat sich von einem Singleton-Dienst zu einem Bereichs bezogenen Dienst geändert.IRawSqlCommandBuilder has changed from a singleton service to a scoped service
    • IMigrationsSqlGenerator hat sich von einem Singleton-Dienst zu einem Bereichs bezogenen Dienst geändert.IMigrationsSqlGenerator has changed from a singleton service to a scoped service
  • https://github.com/dotnet/efcore/pull/14706
    • Die Infrastruktur zum Aufbau von relationalen Befehlen wurde öffentlich gemacht, sodass Sie von Anbietern sicher verwendet und leicht umgestaltet werden kann.The infrastructure for building relational commands has been made public so it can be safely used by providers and refactored slightly.
  • https://github.com/dotnet/efcore/pull/14733
    • ILazyLoader hat sich von einem Bereichs bezogenen Dienst zu einem vorübergehenden Dienst geändert.ILazyLoader has changed from a scoped service to a transient service
  • https://github.com/dotnet/efcore/pull/14610
    • IUpdateSqlGenerator hat sich von einem Bereichs bezogenen Dienst zu einem Singleton-Dienst geändert.IUpdateSqlGenerator has changed from a scoped service to a singleton service
    • Außerdem wurde ISingletonUpdateSqlGenerator entfernt.Also, ISingletonUpdateSqlGenerator has been removed
  • https://github.com/dotnet/efcore/pull/15067
    • Viele interner Codes, die von Anbietern verwendet wurden, wurden nun öffentlich gemacht.A lot of internal code that was being used by providers has now been made public
    • Er sollte nicht mehr als notwendig sein, um darauf zu verweisen, IndentedStringBuilder da er von den Orten, die ihn verfügbar gemacht haben, berücksichtigt wurde.It should no longer be necssary to reference IndentedStringBuilder since it has been factored out of the places that exposed it
    • Die Verwendungen von NonCapturingLazyInitializer sollten durch LazyInitializer aus der BCL ersetzt werden.Usages of NonCapturingLazyInitializer should be replaced with LazyInitializer from the BCL
  • https://github.com/dotnet/efcore/pull/14608
    • Diese Änderung wird vollständig im Dokument "Änderungen der Anwendungs Änderungen" behandelt.This change is fully covered in the application breaking changes document. Für Anbieter kann dies eine Beeinträchtigung der Auswirkung haben, da das Testen von EF Core häufig zu diesem Problem führen kann, sodass sich die Testinfrastruktur so geändert hat, dass dies weniger wahrscheinlich ist.For providers, this may be more impacting because testing EF core can often result in hitting this issue, so test infrastructure has changed to make that less likely.
  • https://github.com/dotnet/efcore/issues/13961
    • EntityMaterializerSource wurde vereinfachtEntityMaterializerSource has been simplified
  • https://github.com/dotnet/efcore/pull/14895
    • StartWith Translation hat sich auf eine Weise geändert, die Anbieter möglicherweise benötigen/benötigen.StartsWith translation has changed in a way that providers may want/need to react
  • https://github.com/dotnet/efcore/pull/15168
    • Die changesetsedienstedienste wurden geändert.Convention set services have changed. Anbieter sollten jetzt entweder von "providerkonventiontionset" oder "relationalkonventiontionset" erben.Providers should now inherit from either "ProviderConventionSet" or "RelationalConventionSet".
    • Anpassungen können über Dienste hinzugefügt werden IConventionSetCustomizer . Dies ist jedoch für die Verwendung durch andere Erweiterungen, nicht für Anbieter vorgesehen.Customizations can be added through IConventionSetCustomizer services, but this is intended to be used by other extensions, not providers.
    • Konventionen, die zur Laufzeit verwendet werden, sollten von aufgelöst werden IConventionSetBuilder .Conventions used at runtime should be resolved from IConventionSetBuilder.
  • https://github.com/dotnet/efcore/pull/15288
    • Das datenseeding wurde in einer öffentlichen API umgestaltet, um zu vermeiden, dass interne Typen verwendet werden müssen.Data seeding has been refactored into a public API to avoid the need to use internal types. Dies wirkt sich nur auf nicht relationale Anbieter aus, da das Seeding von der relationalen Basisklasse für alle relationalen Anbieter verarbeitet wird.This should only impact non-relational providers, since seeding is handled by the base relational class for all relational providers.

2,1---> 2,22.1 ---> 2.2

Nur-Test-ÄnderungenTest-only changes

Test-und Produktcode ÄnderungenTest and product code changes

  • https://github.com/dotnet/efcore/pull/12109 -Konsolidieren von relationaltypemapping. Clone-Methodenhttps://github.com/dotnet/efcore/pull/12109 - Consolidate RelationalTypeMapping.Clone methods
    • Änderungen in 2,1 in relationaltypemapping, die für eine Vereinfachung in abgeleiteten Klassen zulässig sind.Changes in 2.1 to the RelationalTypeMapping allowed for a simplification in derived classes. Wir glauben nicht, dass dies zu Anbietern gehörte, aber Anbieter können diese Änderung in den abgeleiteten Typmapping-Klassen nutzen.We don't believe this was breaking to providers, but providers can take advantage of this change in their derived type mapping classes.
  • https://github.com/dotnet/efcore/pull/12069 -Markierte oder benannte Abfragenhttps://github.com/dotnet/efcore/pull/12069 - Tagged or named queries
    • Fügt eine Infrastruktur zum Markieren von LINQ-Abfragen hinzu, und diese Tags werden als Kommentare in SQL angezeigt.Adds infrastructure for tagging LINQ queries and having those tags show up as comments in the SQL. Dies erfordert möglicherweise, dass Anbieter bei der SQL-Generierung reagieren.This may require providers to react in SQL generation.
  • https://github.com/dotnet/efcore/pull/13115 -Unterstützung räumlicher Daten über NTShttps://github.com/dotnet/efcore/pull/13115 - Support spatial data via NTS
    • Ermöglicht das Registrieren von Typzuordnungen und Mitglieds Übersetzer außerhalb des Anbieters.Allows type mappings and member translators to be registered outside of the provider
      • Anbieter müssen die Basisklasse aufzurufen. Findmapping () in ihrer itypmappingsource-Implementierung, damit es funktioniertProviders must call base.FindMapping() in their ITypeMappingSource implementation for it to work
    • Verwenden Sie dieses Muster, um dem Anbieter räumliche Unterstützung hinzuzufügen, der über mehrere Anbieter hinweg konsistent ist.Follow this pattern to add spatial support to your provider that is consistent across providers.
  • https://github.com/dotnet/efcore/pull/13199 -Erweiterte Debuggen für die Erstellung von Dienstanbieternhttps://github.com/dotnet/efcore/pull/13199 - Add enhanced debugging for service provider creation
    • Ermöglicht dbcontextoptionsextensions, eine neue Schnittstelle zu implementieren, mit der Benutzer verstehen können, warum der interne Dienstanbieter neu erstellt wird.Allows DbContextOptionsExtensions to implement a new interface that can help people understand why the internal service provider is being re-built
  • https://github.com/dotnet/efcore/pull/13289 -Fügt die canConnect-API für die Verwendung durch Integritätsprüfungen hinzuhttps://github.com/dotnet/efcore/pull/13289 - Adds CanConnect API for use by health checks
    • Mit diesem PR wird das Konzept hinzugefügt CanConnect , das von ASP.net Core Integritätsprüfungen verwendet wird, um zu bestimmen, ob die Datenbank verfügbar ist.This PR adds the concept of CanConnect which will be used by ASP.NET Core health checks to determine if the database is available. Standardmäßig ruft die relationale Implementierung nur auf Exist , aber Anbieter können bei Bedarf etwas anderes implementieren.By default, the relational implementation just calls Exist, but providers can implement something different if necessary. Nicht relationale Anbieter müssen die neue API implementieren, damit die Integritätsprüfung verwendet werden kann.Non-relational providers will need to implement the new API in order for the health check to be usable.
  • https://github.com/dotnet/efcore/pull/13306 -Basis relationaltypemapping aktualisieren, sodass die DbParameter-Größe nicht festgelegt wirdhttps://github.com/dotnet/efcore/pull/13306 - Update base RelationalTypeMapping to not set DbParameter Size
    • Legen Sie die Einstellungs Größe standardmäßig fest, da es zu einem Abschneiden führen kann.Stop setting Size by default since it can cause truncation. Anbieter müssen möglicherweise Ihre eigene Logik hinzufügen, wenn die Größe festgelegt werden muss.Providers may need to add their own logic if Size needs to be set.
  • https://github.com/dotnet/efcore/pull/13372 -Reveng: Geben Sie immer den Spaltentyp für Dezimal Spalten an.https://github.com/dotnet/efcore/pull/13372 - RevEng: Always specify column type for decimal columns
    • Konfigurieren Sie immer den Spaltentyp für Dezimal Spalten in einem Gerüst Code, anstatt Sie nach Konvention zu konfigurieren.Always configure column type for decimal columns in scaffolded code rather than configuring by convention.
    • Anbieter sollten keine Änderungen am Ende benötigen.Providers should not require any changes on their end.
  • https://github.com/dotnet/efcore/pull/13469 -Fügt caseexpression zum Erstellen von SQL-Case-Ausdrücken hinzu.https://github.com/dotnet/efcore/pull/13469 - Adds CaseExpression for generating SQL CASE expressions
  • https://github.com/dotnet/efcore/pull/13648 -Fügt die Möglichkeit hinzu, Typzuordnungen für sqlfunctionexpression anzugeben, um die Rückschlüsse von Speichertypen von Argumenten und Ergebnissen zu verbessern.https://github.com/dotnet/efcore/pull/13648 - Adds the ability to specify type mappings on SqlFunctionExpression to improve store type inference of arguments and results.