Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин
День 1434. #ЧтоНовенького
Entity Framework 7. Пакетные Операции и Столбцы JSON
Версия 7 EF Core была выпущена в ноябре вместе с более широким выпуском .NET 7. В обновлённой версии улучшена производительность при сохранении данных, разрешены операции со столбцами JSON, реализованы эффективные пакетные операции, а также содержится множество мелких исправлений и улучшений. EF Core 7 доступен как для .NET 7, так и для .NET 6.
Согласно документации по критическим изменениям, наиболее важным изменением в EF Core 7 является обработка соединений SQL Server по умолчанию как зашифрованных. Разработчикам придётся настроить действительный сертификат на своих машинах или явно ослабить ограничение безопасности. В противном случае строки подключения допустимые в EF6 вызовут исключение в EF7.
Одним из уже известных улучшений в EF7 является повышение производительности при сохранении изменений в базе данных с помощью метода SaveAsync. В некоторых сценариях оно может составлять до 50% по сравнению с EF6 Core на том же компьютере.
В EF7 добавлена поддержка текстовых столбцов, содержащих документы JSON. Разработчики могут фильтровать и сортировать свойства JSON внутри документов как часть запроса к базе данных. EF7 содержит обобщённую поддержку столбцов JSON и конкретную реализацию для провайдера SQL Server.
Пакетные операции с базой данных, такие как массовое обновление или удаление, также были переработаны в EF7. Выполнение стандартного метода SaveChangesAsync может повлиять на несколько записей, но в итоге результаты выполнения SQL загружаются в память. В EF7 теперь есть два новых метода, ExecuteUpdateAsync и ExecuteDeleteAsync, которые немедленно выполняют пакетные операции на сервере и не загружают объекты обратно в память.
По умолчанию EF Core сопоставляет иерархию наследования типов .NET с одной таблицей базы данных в соответствии со стратегией, которая называется Table-per-Hierarchy (TPH). В EF Core 5 добавлена стратегия Table-per-Type (TPT), при которой каждый тип в иерархии получает таблицу базы данных. В EF Core 7 теперь добавлена стратегия Table-per-Concrete-Type (TPC), при которой каждый неабстрактный тип получает таблицу базы данных, а столбцы абстрактного типа добавляются в таблицы конкретных реализаций абстрактного типа.
В EF7 есть и другие улучшения, такие как поддержка пользовательских шаблонов T4 при обратном проектировании базы данных, поддержка переопределения и изменения соглашений модели по умолчанию, улучшенные перехватчики и события, а также сопоставление вставок, обновлений и удалений с хранимыми процедурами.
Хотя исторически разработчики .NET воспринимали Entity Framework как громоздкую и полную недостатков, новые версии теперь признаны высокоэффективными, отказоустойчивыми ORM.
В выпуске EF7 уже есть дорожная карта для EF8 с дополнительными улучшениями для столбцов JSON, поддержкой объектов-значений .NET и возможностью возвращать несопоставленные типы в качестве результатов запроса.
Источник: https://www.infoq.com/news/2022/12/ef7-core-json/