Изменения, влияющие на поставщика

На этой странице содержатся ссылки на запросы на включение внесенных изменений в репозиторий EF Core, для реагирования на которые могут потребоваться авторы других поставщиков баз данных. Целью является предоставление отправной точки авторам существующих сторонних поставщиков баз данных при обновлении их поставщика до новой версии.

Мы начинаем этот журнал с изменениями с 2,1 по 2,2. До 2,1 мы использовали providers-bewareproviders-fyi метки и для наших проблем и запросов на вытягивание.

2,2--- > 3. x

Обратите внимание, что многие из критических изменений на уровне приложения также повлияют на поставщиков.

  • https://github.com/dotnet/efcore/pull/14022
    • Удалены устаревшие API и свернуты перегрузки необязательных параметров
    • Удален Датабасеколумн. Жетундерлингсторетипе ()
  • https://github.com/dotnet/efcore/pull/14589
    • Удалены устаревшие API
  • https://github.com/dotnet/efcore/pull/15044
    • Подклассы Чартипемаппинг могут быть разорваны из-за изменений в поведении, необходимых для исправления нескольких ошибок в базовой реализации.
  • https://github.com/dotnet/efcore/pull/15090
    • Добавлен базовый класс для Идатабасемоделфактори и обновлен для использования объекта с параметром, чтобы снизить вероятность перерывов в будущем.
  • https://github.com/dotnet/efcore/pull/15123
    • Используемые объекты параметров в Мигратионссклженератор для устранения будущих перерывов.
  • https://github.com/dotnet/efcore/pull/14972
    • Явная настройка уровней журнала требует внесения некоторых изменений в API-интерфейсы, которые могут использоваться поставщиками. В частности, если поставщики используют инфраструктуру ведения журнала напрямую, это изменение может привести к нарушению использования. Кроме того, поставщики, использующие инфраструктуру (которая будет общедоступной), должны быть производными от LoggingDefinitions или RelationalLoggingDefinitions . примеры см. в SQL Server и в поставщиках в памяти.
  • https://github.com/dotnet/efcore/pull/15091
    • Строки ресурсов Core, реляционных и абстракций теперь являются открытыми.
    • CoreLoggerExtensions и RelationalLoggerExtensions теперь являются общедоступными. Поставщики должны использовать эти API при регистрации событий, определенных на базовом или реляционном уровне. Не обращаются к ресурсам ведения журнала напрямую; они по-прежнему являются внутренними.
    • IRawSqlCommandBuilder изменился с одноэлементной службы на службу с заданной областью
    • IMigrationsSqlGenerator изменился с одноэлементной службы на службу с заданной областью
  • https://github.com/dotnet/efcore/pull/14706
    • Инфраструктура для создания реляционных команд стала общедоступной, чтобы ее можно было безопасно использовать в поставщиках и выполнить рефакторинг несколько рефакторинга.
  • https://github.com/dotnet/efcore/pull/14733
    • ILazyLoader изменился с службы с заданной областью на временную службу
  • https://github.com/dotnet/efcore/pull/14610
    • IUpdateSqlGenerator изменился с службы с заданной областью на одноэлементную службу
    • Кроме того, был ISingletonUpdateSqlGenerator удален
  • https://github.com/dotnet/efcore/pull/15067
    • Большой объем внутреннего кода, который использовался поставщиками, теперь стал общедоступным
    • Он больше не должен быть некссари для ссылок IndentedStringBuilder , так как он был развернут из расположений, которые он предоставил.
    • Использование NonCapturingLazyInitializer следует заменить на LazyInitializer основе BCL.
  • https://github.com/dotnet/efcore/pull/14608
    • Это изменение полностью описано в документе критические изменения приложения. Для поставщиков это может быть более повлиять на то, что тестирование EF Core часто может привести к достижению этой проблемы, поэтому инфраструктура тестирования изменилась, чтобы уменьшить вероятность этого.
  • https://github.com/dotnet/efcore/issues/13961
    • EntityMaterializerSource было упрощено
  • https://github.com/dotnet/efcore/pull/14895
    • Преобразование StartsWith изменилось, так как поставщики могут захотеть реагировать на них
  • https://github.com/dotnet/efcore/pull/15168
    • Службы настройки соглашений изменились. Теперь поставщики должны наследовать от "Провидерконвентионсет" или "Релатионалконвентионсет".
    • Настройки можно добавлять с помощью IConventionSetCustomizer служб, но они предназначены для использования другими расширениями, а не поставщиками.
    • Соглашения, используемые во время выполнения, должны быть разрешены из IConventionSetBuilder .
  • https://github.com/dotnet/efcore/pull/15288
    • Заполнение данных было выполнено в общедоступном API, чтобы избежать необходимости использовать внутренние типы. Это относится только к нереляционным поставщикам, поскольку заполнение обрабатывается базовым реляционным классом для всех реляционных поставщиков.

2,1--- > 2,2

Изменения только для тестирования

  • https://github.com/dotnet/efcore/pull/12057-разрешить настраиваемые SQL разделителями в тестах
    • Тестовые изменения, допускающие неоднородные сравнения с плавающей точкой в Буилтиндататипестестбасе
    • тестовые изменения, позволяющие повторно использовать тесты запросов с разными SQL разделителями
  • https://github.com/dotnet/efcore/pull/12072 — Добавление тестов Дбфунктион в тесты реляционной спецификации
    • Таким, что эти тесты могут выполняться для всех поставщиков баз данных.
  • https://github.com/dotnet/efcore/pull/12362 — Очистка теста Async
    • Удалите Wait вызовы, ненужные асинхронные запросы и переименуйте некоторые методы теста.
  • https://github.com/dotnet/efcore/pull/12666 — Унификация инфраструктуры тестирования ведения журнала
    • Добавлена CreateListLoggerFactory и удалена предыдущая Инфраструктура ведения журнала, которая потребует от поставщиков использовать эти тесты для реагирования.
  • https://github.com/dotnet/efcore/pull/12500 — Выполнение дополнительных тестов запросов как синхронно, так и асинхронно
    • Имена тестов и факторинги изменились, что потребует от поставщиков использовать эти тесты для реагирования
  • https://github.com/dotnet/efcore/pull/12766 — Переименование переходов в модели Комплекснавигатионс
    • Для поставщиков, использующих эти тесты, может потребоваться реагирование
  • https://github.com/dotnet/efcore/pull/12141 — Возврат контекста в пул вместо удаления в функциональных тестах
    • Это изменение включает в себя некоторый рефакторинг теста, который может потребовать от поставщиков реагировать на них

Изменения кода теста и продукта

  • https://github.com/dotnet/efcore/pull/12109 -Консолидировать методы Релатионалтипемаппинг. Clone
    • Изменения в 2,1 в Релатионалтипемаппинг разрешены для упрощения в производных классах. Мы не считаем, что это было приделено к поставщикам, но поставщики могут воспользоваться этим изменением в своих производных классах сопоставления типов.
  • https://github.com/dotnet/efcore/pull/12069 -Размеченные или именованные запросы
    • Добавляет инфраструктуру для добавления тегов в запросы LINQ и отображения этих тегов в виде комментариев в SQL. это может потребовать от поставщиков реагировать на создание SQL.
  • https://github.com/dotnet/efcore/pull/13115 — Поддержка пространственных данных через NTS
    • Позволяет регистрировать сопоставления типов и трансляторы участников за пределами поставщика
      • Поставщики должны вызывать base. Финдмаппинг () в своей реализации Итипемаппингсаурце для работы
    • Используйте этот шаблон, чтобы добавить в поставщик пространственное поддержку, согласованную между поставщиками.
  • https://github.com/dotnet/efcore/pull/13199 — Добавление расширенной отладки для создания поставщика услуг
    • Позволяет Дбконтекстоптионсекстенсионс реализовать новый интерфейс, который поможет пользователям понять, почему происходит перестроение внутреннего поставщика услуг
  • https://github.com/dotnet/efcore/pull/13289 — Добавляет API Канконнект для использования проверками работоспособности.
    • этот запрос добавляет понятие, CanConnect которое будет использоваться ASP.NET Core проверками работоспособности, чтобы определить, доступна ли база данных. По умолчанию реляционная реализация просто вызывает Exist , но поставщики могут при необходимости реализовать что-то другое. Нереляционные поставщики должны реализовать новый API, чтобы можно было использовать проверку работоспособности.
  • https://github.com/dotnet/efcore/pull/13306 -Обновление базового Релатионалтипемаппинг не задавать размер DbParameter
    • По умолчанию прерывать размер установки, так как это может привести к усечению. Поставщикам может потребоваться добавить собственную логику, если необходимо задать размер.
  • https://github.com/dotnet/efcore/pull/13372 -Ревенг: всегда указывайте тип столбца для десятичных столбцов
    • Всегда настраивайте тип столбца для десятичных столбцов в сформированном коде вместо настройки по соглашению.
    • Поставщики не должны запрашивать изменения в их окончании.
  • https://github.com/dotnet/efcore/pull/13469— добавляет касикспрессион для создания выражений вариантов SQL
  • https://github.com/dotnet/efcore/pull/13648 — Добавляет возможность указания сопоставлений типов в Склфунктионекспрессион для улучшения определения типа хранилища аргументов и результатов.