Microsoft выпускает Entity Framework 6 для .NET Core
Microsoft объявила о выпуске предварительного просмотра Entity Framework 6.3, который переносит традиционную инфраструктуру объектно-реляционного сопоставления (ORM) с открытым исходным кодом в пространство .NET Core, присоединяя Entity Framework Core в качестве опции для использования предстоящего .NET Core 3.0.
Предварительный просмотр - это еще одна часть массового перехода компании на кроссплатформенный подход с открытым исходным кодом, предлагаемый предложениями «Core», вытесняющий традиционную 17-летнюю схему на основе Windows .NET Framework.
Хотя Entity Framework изначально был частью этой .NET Framework, начиная с Entity Framework 6 среда выполнения была отделена от этой платформы. Теперь, с выходом предварительной версии EF 6.3, Microsoft делает первые шаги, чтобы помочь разработчикам данных, ориентированным на Microsoft, перевести свои приложения в новый порядок ядра.
Как описывает Microsoft:
- Entity Framework 6 (EF6) - это испытанный и протестированный объектно-реляционный картограф (O/RM) для .NET с многолетней разработкой и стабилизацией функций.
- Entity Framework (EF) Core - это легковесная, расширяемая, кроссплатформенная версия с открытым исходным кодом популярной технологии доступа к данным Entity Framework.
Компания работает над созданием единого предложения, объединяющего все вместе под названием .NET 5, которое должно выйти в следующем году.
А пока перенос продуктов на .NET Core осуществляется по частям.
«Хотя Entity Framework Core изначально создавался для работы на .NET Core, 6.3 будет первой версией EF 6, которая может работать на .NET Core и работать кроссплатформенно», - сказал Диего Вега, менеджер программ .NET. Data Access, в блоге на прошлой неделе. «Фактически, главная цель этого выпуска - облегчить миграцию существующих приложений, использующих EF 6, на .NET Core 3.0».
В качестве первого усилия в этом направлении, предварительный просмотр имеет некоторые «основные ограничения», сказал Вега, такие как:
- Команды миграции не могут быть выполнены для проектов, не предназначенных для .NET Framework.
- Не поддерживается дизайнер EF для проектов, не ориентированных на .NET Framework.
- В .NET Core не поддерживается сборка и запуск моделей с файлами EDMX. В .NET Framework это зависит от задачи сборки, которая разделяет и внедряет содержимое файла EDMX в конечный исполняемый файл, и эта задача недоступна для .NET Core.
- Выполнение первых проектов кода в .NET Core проще, но все же требует дополнительных шагов, таких как программная регистрация DbProviderFactories и либо явная передача строки подключения, либо настройка DbConnectionFactory в конфигурации DbConfiguration.
- Только поставщик SQL Server, основанный на System.Data.SqlClient, работает на .NET Core. Другие поставщики EF6 с поддержкой .NET Core еще не выпущены.
Что касается ограничения, связанного с EDMX - беспокойства нескольких разработчиков, прокомментировавших этот пост, - Вега заявил, что это временное ограничение, которое, как ожидается, будет снято к моменту выпуска конечного продукта.
В ответ на другой вопрос он уточнил позицию компании в отношении альтернативных предложений: «Этот пост посвящен следующей минорной версии EF6, которая теперь также работает на .NET Core. EF Core и EF6 остаются двумя разными продуктами, и ничего остальное изменилось.
В дополнение к ограничениям предварительного просмотра, описанным выше, долгосрочные ограничения, перечисленные Вега, включают:
- Не планируется поддержка поставщика SQL Server Compact в .NET Core. В .NET Core нет поставщика ADO.NET для SQL Server Compact.
- Пространственные типы SQL Server и HierarchyID недоступны в .NET Core.
Поскольку Microsoft решает проблемы в предварительном просмотре v6.3, она в конечном итоге стремится поддерживать:
- NuGet PackageReferences (это подразумевает бесперебойную работу без каких-либо записей EF в файлах конфигурации приложения)
- Команды миграции, выполняемые в проектах с использованием новой системы проектов .NET
В своем посте Вега дал советы по началу работы и указал на трекер проблем проекта для получения дополнительной информации об исправлениях ошибок и многом другом.
Предварительный просмотр доступен через NuGet.