Microsoft выпустила окончательную версию Entity Framework Core 2.0, наряду с .NET Core 2.0 и ASP.NET Ядро 2.0. Entity Framework (EF) Core-это облегченная кроссплатформенная версия Entity Framework, фреймворка объектно-реляционного отображения (O/RM) для .NET.
Положительные аспекты EF Core включают более эффективную и надежную реализацию LINQ, а также упрощенную модель поставщика наряду с использованием DI. Ядро EF теперь ориентировано на новый стандарт .NET 2.0.
Улучшения реализации LINQ начинаются с лучшей обработки подзапросов, которые больше не являются вложенными без необходимости. Запросы также с меньшей вероятностью преждевременно переключаются на оценку на стороне клиента, и LINQ больше не извлекает все столбцы таблицы, когда было запрошено только несколько.
Новый ЭФ.Было введено свойство функций. Это можно использовать для сопоставления операторов с функциями или операторами базы данных, а затем вызывать их в запросах LINQ. Эта версия добавляет оператор Like (), поэтому вы можете использовать EF.Функции.Like() в запросе LINQ, и он будет переведен в LIKE в SQL или вычислен в памяти, если это необходимо.
Еще одним улучшением являются глобальные фильтры запросов. Теперь в модели можно указать фильтры, которые автоматически применяются ко всем сущностям типа во всех запросах, выполняемых в DbContext.
Однако некоторые улучшения, на которые надеялись пользователи EF Core, все еще отсутствуют. Генерация SQL по-прежнему смешана, и по-прежнему нет поддержки GROUP BY. Планируется, что это будет добавлено в EF Core 2.1.
Еще один элемент списка пожеланий, который отсутствует,-это поддержка сложных типов. Они были доступны и все еще находятся в «полной» структуре сущностей, полагаясь вместо этого на собственные или дочерние типы. Пишу об этом на своем .СЕТЕВОЙ блог, сказал Диего Б Вега:
«Теперь вы можете определить “принадлежащие” или “дочерние” сущности, которые группируют свойства внутри других сущностей, очень похоже на то, как сложные типы работали в EF6, но с возможностью содержать ссылочные свойства навигации.»
Проблема в том, что при этом используется другой синтаксис, что затрудняет перенос моделей EF в ядро EF из других версий.
Еще одна основная концепция SQL, которая не была полностью реализована, — это хранимые процедуры. Хранимые процедуры выполняются на сервере, а не переносят все данные в приложение для обработки, и могут быть гораздо более эффективными. Есть обходные пути, но кажется странным, что это не было добавлено.
Другие элементы в списке пожеланий, которые еще не были добавлены, — это поддержка пространственных типов и поддержка ленивой загрузки, когда объекты загружаются только тогда, когда они необходимы. Это поддерживается (и популярно) в полной Entity Framework, но было отложено до EF Core 2.1.