Posted on 19. April 2019

Вышел Entity Framework Core 3.0 Preview 4

Недавно была выпущена четвертая preview-версия Entity Framework Core 3.0, доступная для NuGet, а также релизы .NET Core 3.0 Preview 4 и ASP.NET Core 3.0 Preview 4. Эта версия рекомендуема к установке для того, чтобы протестировать новый функционал и оценить фундаментальные изменения.

Что нового в EF Core 3.0 Preview 4?

Эта preview-версия содержит более 50 исправлений ошибок и улучшений функционала. Вы можете запросить у трекера проблем полный список исправлений в Preview 4, а также в Preview 3 и Preview 2.

Некоторые из наиболее важных изменений: 

LINQ-запросы больше не анализируются на клиенте

Новое LINQ внедрение, которое представлено в предстоящей preview-версии, не будет поддерживать автоматическую оценку клиента, за исключением последнего выбора оператора в Вашем запросе. При подготовке к этому изменению в четвертой preview-версии было переключено существующее поведение оценки клиента на ход по умолчанию.

Несмотря на то, что все еще возможно восстановить старое поведение, перенастроив оценку клиента так, чтобы он вызывал только предупреждение, все-таки рекомендуется протестировать Ваше приложение с новым значением по умолчанию. Если Вы видите исключения оценки клиента, Вы можете попробовать изменить Ваши запросы, чтобы избежать оценки клиента. Если это не сработает, Вы можете ввести вызовы AsEnumerable() или ToList(), чтобы переключить обработку запроса к клиенту в тех местах, где это возможно. Вы можете использовать необработанные SQL-запросы вместо LINQ, если ни один из этих вариантов не будет работать.

Посмотрите подробности последних изменений, чтобы узнать больше.

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

Среда EF Core больше не является частью ASP.NET Core платформы

Обратите внимание, что это изменение было добавлено еще в Preview 1, но ранее не было представлено.

Основным последствием этого изменения является то, что независимо от того, какое приложение Вы создаете или какую базу данных использует Ваше приложение, Вы всегда получаете EF Core, устанавливая NuGet пакет для выбранного Вами EF Core провайдера.

В любой операционной системе, поддерживаемой для .NET Core разработки, Вы можете установить preview-версию, установив провайдер для EF Core 3.0 Preview 4. Например, чтобы установить SQLite провайдер, введите его в командной строке:

$ dotnet add package Microsoft.EntityFrameworkCore.Sqlite -v 3.0.0-preview4.19216.3

Или из Package Manager Console в Visual Studio:

PM> Install-Package Microsoft.EntityFrameworkCore.Sqlite -Version 3.0.0-preview4.19216.3

Посмотрите подробности о последних изменениях, чтобы узнать еще больше.

Инструмент dotnet ef больше не является частью .NET Core SDK

Это изменение позволяет поставлять dotnet ef как обычный .NET CLI инструмент, который можно установить как глобальный или локальный инструмент. Например, чтобы иметь возможность управлять миграциями или создавать DbContext, установите dotnet ef как глобальный инструмент и введите следующую команду:

1
$ dotnet tool install --global dotnet-ef --version 3.0.0-preview4.19216.3
Посмотрите подробности фундаментальных изменений, чтобы узнать больше.

Зависимые сущности, совместно использующие таблицы со своими основными сущностями, теперь необязательны

К примеру, это позволяет необязательным образом владеть сущностями, сопоставленными с той же таблицей, что и владелец.

Смотрите вопрос #9005 для получения дополнительной информации.

Улучшения образования ключей для базы данных в памяти

Было выпущено несколько улучшений, чтобы упростить использование базы данных в памяти для модульного тестирования. Например, каждое сгенерированное свойство теперь увеличивается независимо. Кроме того, когда база данных удаляется, генерация ключа сбрасывается и начинается с 1. Наконец, если свойство в объекте содержит значение, превышающее последнее значение, возвращаемое генератором, последнее поднимается до следующего доступного значения.

Для получения дополнительной информации смотрите вопрос #6872.

Отдельные методы для работы с необработанными SQL-запросами в виде простых или интерполированных строк

Существование перегрузок методов, принимающих SQL как простые или интерполированные строки, затрудняло прогнозирование того, какая версия будет использоваться и как будут обрабатываться параметры. Чтобы устранить эту путаницу, были добавлены новые FromSqlRaw, FromSqlInterpolated, ExecuteSqlRaw и ExecuteSqlInterpolated методы. Существующие FromSql и ExecuteSqlCommand методы уже устарели.

Смотрите вопрос #10996 для получения дополнительной информации.

Соединение с базой данных больше не остается открытым, пока не будет удален TransactionScope

Это позволяет EF Core лучше работать с провайдерами баз данных, которые оптимизированы для работы с System.Transactions, такими как SqlClient и Npgsql.

Посмотрите подробности последних изменений, чтобы узнать больше.

Анализатор кода, который обнаруживает использование внутренних API в EF Core

EF Core предоставляет некоторые из своих внутренних API в открытых типах. Например, все типы во вложенных пространствах имен EF Core с именем Internal считаются внутренними API, даже если технически они являются открытыми типами. В прошлом это позволяло разработчикам приложений непреднамеренно использовать внутренние API в своем коде. В новом анализаторе использование внутренних API-интерфейсов EF Core по умолчанию выдает предупреждение. Например:

EF1001: Microsoft.EntityFrameworkCore.Internal.MethodInfoExtensions - это внутренний API, который поддерживает инфраструктуру Entity Framework Core и не подчиняется темже стандартам совместимости, что и публичные API. Он может быть изменен или удален без предварительного уведомления в любом выпуске.

Если использование является преднамеренным, предупреждение может быть скрыто, как любое предупреждение анализа кода.

Смотрите вопрос #12104 для получения дополнительной информации.

Улучшена производительность итерации по отслеживаемым объектам с использованием значения .Local

Дополнительно были добавлены улучшения, чтобы итерация содержимого .Local работала в три раза быстрее. Если Вы собираетесь выполнять итерацию несколько раз, Вам все равно следует сначала вызвать ToObservableCollection().

Смотрите вопрос #14231 для получения дополнительной информации.

Концепция типов запросов была переименована без ключей

Обратите внимание, что это изменение было добавлено еще в Preview 3, но ранее не было представлено.

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

Посмотрите подробности последних изменений, чтобы узнать больше.

Новая preview-версия Cosmos DB provider для EF Core

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

Для получения полной информации см. Список задач Cosmos DB провайдера здесь.

Что дальше?

Как подробно описано в списке новых функций, в версии 3.0 планируется реализация улучшенного LINQ, поддержка Cosmos DB, поддержка функций C# 8.0, таких как обнуляемые ссылочные типы и асинхронные коллекции, обратный инжиниринг представлений базы данных, сущности пакетов свойств и новая EF6 версия, которая может работать на .NET Core.

В первых 4 предварительных версиях большинство усилий были сосредоточены на улучшениях, которые, могли оказать наибольшее влияние на существующие приложения и провайдеров баз данных, пытающихся выполнить обновление с предыдущими версиями. Реализация этих «критических изменений» и архитектурных улучшений на ранних этапах предоставляет больше времени для сбора отзывов и реагирования на непредвиденные проблемы пользователей. Но это также означает, что многие из этих важных функций должны были ждать более поздних preview-версий. На этом этапе Вы можете ожидать, что начальная поддержка большинства функций 3.0 версии появится в течение следующих нескольких обновлений.

Для удобства отслеживания прогресса, смотрите еженедельные обновления статуса на GitHub. Вы можете подписаться на уведомления, чтобы получать электронные письма каждый раз, когда будут обновления.

И еще немного важной информации о том, что будет добавлено в будущем:

EF Core 3.0 будет ориентирован на .NET Standard 2.1

Изучив несколько вариантов, был сделан вывод, что создание целевого EF Core 3.0 объекта для .NET Standard 2.1 - лучший путь для использования преимуществ новых функций в .NET и C#, таких как интеграция с IAsyncEnumerable. Это совместимо с аналогичными решениями, выпущенными в прошлом году для ASP.NET Core 3.0 и C# 8.0, и позволяет двигаться вперед, не внедряя адаптеры совместимости, которые могут помешать возможности предоставлять новые функции в .NET Core в будущем.

Хотя Preview 4 по-прежнему предназначен для .NET Standard 2.0, для RTM-версии потребуется версия 2.1, и поэтому он не будет совместим с .NET реализациями, которые поддерживают только .NET Standard 2.0, например .NET Framework. Пользователям, которым необходимо запустить EF Core в .NET Framework, следует продолжить использование EF Core 2.1 или 2.2.

EF 6.3 будет ориентирован на .NET Standard 2.1, в дополнение к уже поддерживаемым .NET Framework версиям

Было обнаружено, что API, предлагаемые .NET Standard 2.1, подходят для EF6 поддержки без удаления каких-либо функций времени выполнения. В дополнение к .NET Standard 2.1 пакет NuFet EF 6.3 будет, как обычно, поддерживать .NET Framework 4.0 (без асинхронной поддержки) и .NET Framework 4.5 и выше. В настоящее время будет тестирование и поддержка только EF 6.3, работающего на .NET Framework и .NET Core 3.0. Но нацеливание на .NET Standard 2.1 откроет возможность работы EF 6.3 с другими .NET реализациями, при условии, что они полностью реализуют стандарт и не имеют других ограничений времени выполнения.

Подводя итоги

EF команда хотела бы поблагодарить всех за отзывы и вклад в эту preview-версию. Не забудьте попробовать последние обновления и оставляйте любые отзывы и запросы здесь.





Posted on 5. April 2017

Выпущены Windows 10 Creators Update и Creators Update SDK

Сегодня Microsoft открыли доступ к загрузке Windows 10 Creators Update и вместе с ним к Creators Update SDK. И сегодня выдающийся день для всех Windows разработчиков, чтобы получить SDK и начать создавать прекрасные приложения, которые будут использовать все преимущества новых возможностей платформы, чтобы доставить опыт, который вы и ваши пользователи будут любить.

Разработчики Microsoft прилагают много усилий, чтобы внедрять инновации в Windows и приподносят возможности этих инноваций разработчикам и пользователям Windows. Microsoft выпустила Windows 10 Anniversary Update всего лишь восемь месяцев назад, и уже видим, что более 80% компьютеров под управлением Windows 10 используют Anniversary Updatе (версия 1607) или более поздние версии.

 

Можно смело сказать, что с сегодняшним выпуском обновления Windows 10 Creators Update, пользователи снова быстро перейдут к последней и лучшей версии Windows. Для разработчиков это самое время, чтобы подготовиться к следующей волне.

Что нового в Creators Update

Вот лишь несколько новых и мощных возможностей в Creators Update:

 

  • Улучшения визуального слоя (эффекты, анимация и переходы) и повышение количества эффектов на уровень XAML с улучшенными элементами управления, которые упрощают добавление улучшений в приложения
  • Улучшения рукописного ввода, в том числе анализ рукописного ввода и улучшенное распознавание, а также панель инструментов с новыми эффектами (наклонный карандаш) и инструменты (транспортир для рисования кривых и кругов)
  • Более мощные и гибкие API для Surface Dial
  • Значительные усовершенствования Bluetooth с Bluetooth LE GATT Server, периферийный режим для более простого обнаружения устройств Windows и поддержка слабосвязанных устройств Bluetooth (эти устройства с низким энергопотреблением не обязательно должны быть явно сопряжены)
  • Более эффективное взаимодействие с пользователем посредством уведомлений, которые теперь можно сгруппировать по приложению, привязать к данным и содержать встроенные элементы управления, такие как индикаторы выполнения
  • Улучшения  Desktop Bridge, чтобы как можно быстрее принести приложения Win32 в Windows 10 и Windows Store
  • Возможность иметь бесшовные перекрестные устройства с Project Rome и недавно выпущенным Android SDK для Project Rome
  • Более целенаправленное и эффективное привлечение пользователей через приложения Facebook с функцией установки приложения с помощью Windows SDK для Facebook
  • Улучшения фонового выполнения, которые позволяют задачам делать больше с увеличенной памятью и временем
  • Улучшенная безопасность приложений с возможностью интеграции Windows Hello
  • Улучшение аналитики приложений с помощью обновленного Dev Portal, который позволяет управлять несколькими приложениями и улучшенными отчетами
  • Более быстрое скачивание и обновление приложений с возможностью компоновки пакетов приложений и потоковой установки
  • Повышенная эффективность и гибкость благодаря новой возможности Visual Studio 2017 для одновременного запуска двух разных версий SDK на одном устройтсве
  • Значительные улучшения Windows Console и Windows Subsystem для Linux, которые позволяют использовать наиболее часто используемые платформы Linux, инструменты и сервисы
  • Возможность для разработчиков игр достигать новых аудиторий путем публикации игр UWP на Xbox через программу Xbox Live Creators
  • Удивительные 3D-впечатления от HoloLens и новых гарнитур смешанной реальности через платформу Windows Mixed Reality
     Здесь вы можете найти более полный список вместе с последней документацией разработчика.
     Microsoft расскажет все эти (и гораздо больше) на конференции Microsoft Build 2017, включая те вещи, которые мы запланировали на будущее.
     
     Начать сейчас
     Для начала ознакомьтесь с записью Clint Rutkas, чтобы узнать, как получить последнюю версию Visual Studio и SDK. Посмотрите запись блога Даниэля Джейкобсона, чтобы рассмотреть некоторые улучшения для разработчиков UWP в Visual Studio 2017.

 



Posted on 4. April 2017

Объявление о UWP Community Toolkit 1.4

На сегодняшний день UWP Community Toolkit обновляется 4й раз. В предыдущей версии были добавлены новые элементы управления, поэтому в текущей версии разработчики концентрировались на стабилизации и улучшении существующих элементов управления и служб.

Среди этих доработок: улучшенная доступность для всех элементов управления в соответствии с нашими правилами вклада. Теперь каждый элемент управления можно использовать с клавиатуры, мыши и сенсорного ввода. Разработчики также обеспечили, чтобы элементы управления предоставили достаточно информации для экранного диктора, чтобы сделать их совместимыми с программами чтения с экрана.

Также разработчики представили новый проект (и новый пакет NuGet) под названием Microsoft.Toolkit.Uwp.DeveloperTools. Цель этого проекта - предоставить инструменты поддержки для разработчиков. Для первой версии проекта мы начали с двух элементов управления:

  • FocusTracker: Может использоваться в вашем приложении для отображения информации о текущем сфокусированном элементе управления (имя, тип и т. д.). Это очень усилит доступность Вашего приложения.
  • AlignmentGrid: Может использоваться для отображения сетки, помогая вам выровнять элементы управления на своих страницах.

Инструменты разработчика не предназначены для развертывания с вашим приложением,но используются во время разработки, чтобы улучшить общее качество вашего приложения.

 

 

Наряду с вышеперечисленными улучшениями и стабилизациями, также добавили новые функции в этой версии. Вот несколько основных дополнений:

1. Carousel: Новый элемент управления, показывающий элементы в списке, где выбранный элемент всегда находится в центре, а другие элементы - вокруг него. Это влияет не только на контент, но и на изменения компоновки, поэтому он может автоматически адаптироваться к различным форм-факторам. Carousel может быть горизонтальным или вертикальным.

2. ViewExtensions: ApplicationViewExtensions, StatusBarExtensions и TitleBarExtensions предоставляют декларативный способ установки свойств AppView, StatusBar и TitleBar из XAML.

3. NetworkHelper: дает  возможность отслеживать изменения в сетевом соединении и позволяет пользователям запрашивать сетевую информацию без дополнительных поисков.

4. Saturation: обеспечивает поведение, позволяющее выборочно насыщать элемент XAML. Мы также представили CompositionBehaviorBase, чтобы облегчить создание новых композиционных поведений (Blur теперь использует это).

5. Поддержка API потоковой передачи Twitter: службе Twitter не хватало поддержки потокового сервиса Twitter; Мы добавили поддержку живых твитов и событий.

6. Поле поиска для образца приложения: новое приложение образец позволяет вам искать образец непосредственно из главного меню.

 

Это лишь частичный список изменений в UWP Community Toolkit 1.4. Полный обзор нововведений в версии 1.4 можно найти в выпуске GitHub.

Вы можете начать работу, следуя этим инструкциям, или просмотреть последние функции, установив пример приложения UWP Community Toolkit из Windows Store.

Напоминаем, что набор инструментальных средств можно использовать в любом приложении (на ПК, Xbox One, мобильном устройстве, HoloLens и устройствах Surface Hub), ориентированном на Windows 10 November Update (10.0.10586) или выше. Несколько функций, которые доступны для более новых обновлений ОС, четко обозначены в документации и в примере приложения.

Если вы хотите внести свой вклад, присоединяйтесь к проекту на GitHub!



Posted on 1. March 2017

UNETA Spring 2017

Друзья, 10го марта проведем очередную встречу сообщества разработчиков Uneta. Будет много интересного и нововго. Приходите!