Start Debugging

dotnet-11

319 статей · Страница5из32

Lookup<TKey, TElement> или Dictionary<TKey, List<TValue>> для повторяющихся ключей в C#

Используйте ToLookup, когда группировка строится один раз и дальше только читается: она неизменяема, для отсутствующего ключа возвращает пустую последовательность, принимает ключ null и сохраняет порядок первого появления. Используйте Dictionary<TKey, List<TValue>>, когда группы меняются после создания или проходят через границу JSON.

Юнионы C# в ASP.NET Core 11: тела запросов, SignalR и OpenAPI работают, query string нет

Команда ASP.NET Core описала, где типы union из C# 15 работают в .NET 11: тела запросов в minimal API и MVC, JsonHubProtocol в SignalR, Blazor и схемы anyOf в OpenAPI. Привязка из маршрута, query, заголовков и форм пока не поддерживается.

SignalR в .NET 11 RC 1 меняет истекающий токен, не разрывая соединение

API обновления аутентификации SignalR финализированы в .NET 11 RC 1: переименованные обратные вызовы у HubConnection, клиент на TypeScript и цепи Blazor Server, которые автоматически подхватывают обновлённый ClaimsPrincipal.

Как прочитать ответ ProblemDetails по RFC 9457 из типизированного HttpClient, не ссылаясь на ASP.NET Core

В BCL нет типа ProblemDetails, а добавление FrameworkReference на Microsoft.AspNetCore.App приводит к тому, что клиент отказывается запускаться в контейнере, где есть только среда выполнения. Вот модель на 20 строк, DelegatingHandler, который превращает problem+json в типизированное исключение, и миф про content-type, который до сих пор повторяет большинство ответов.

Как найти обработчики async void, вызывающие ANR в Android-приложении на .NET MAUI

Play Console сообщает, что доля ANR превысила 0.47%, и выдаёт нативную трассировку, забитую кадрами libcoreclr.so. Разбираем, как перейти от этой бесполезной трассировки к конкретному обработчику события async void, заблокировавшему главный поток: printer для Looper, обёртка SynchronizationContext, называющая машину состояний, и dotnet-trace через dsrouter.

Как использовать пессимистичную блокировку с UPDLOCK и SELECT ... FOR UPDATE в EF Core 11

В EF Core 11 по-прежнему нет API блокировок. Разбираем, как взять настоящую блокировку строки через FromSql: WITH (UPDLOCK, ROWLOCK) в SQL Server, FOR UPDATE в PostgreSQL, ловушка с подзапросом, которая молча расширяет блокировку, NOWAIT и SKIP LOCKED, повторы при дедлоках и что делать, когда строки ещё нет.

Как написать value converter в EF Core 11, который преобразует null из базы данных в ненулевое значение в коде

По умолчанию EF Core никогда не передаёт null в value converter. Разбираем внутренний конструктор convertsNulls, который это меняет, вызов IsRequired(false), от которого он зависит, почему он не работает с enum и другими типами значений, ловушку WHERE col = NULL, которую он создаёт, и два подхода, решающие задачу без внутреннего API.

Что такое режим рендеринга в Blazor и какой из них выполняет мой компонент?

Режим рендеринга определяет, где выполняется компонент Razor и является ли он интерактивным. Здесь разобраны четыре режима в .NET 11, правила наследования, определяющие, что получит ваш компонент, и свойства RendererInfo и AssignedRenderMode, которые во время выполнения показывают, какой режим победил.

Что такое перехватчик EF Core и когда он нужен?

Перехватчик EF Core - это класс, который EF вызывает до и после операций вроде выполнения команды или SaveChanges и который может изменить или подавить их, а не только наблюдать. Здесь разобраны семь точек перехвата в EF Core 11, правила регистрации и времени жизни, а также случаи, когда фильтр запроса или обычное журналирование подходят лучше.
Назад Вперёд