5 фич EF Core, которые тебе точно пригодятся
Разделение запросов (Query Splitting)
— Делит JOIN-запросы на несколько отдельных
— Может ускорить выполнение, особенно при сложных связях
Массовое обновление (Bulk Updates)
— Использует ExecuteUpdate для изменения множества сущностей
— Обновление идёт сразу в базу, мимо Unit of Work
Сырые SQL-запросы (Raw SQL)
— Подгружай сущности напрямую через SQL
— Полный контроль над запросом, можно юзать фичи SQL
Массовое удаление (Bulk Deletes)
— Через ExecuteDelete удаляешь пачку записей
— Тоже обходит Unit of Work и идёт сразу в базу
Игнорирование фильтров запросов (Ignore Query Filters)
— Фильтры позволяют скрывать строки по умолчанию
— Иногда нужно отключить, например, для админки
🧠 Бонус: ещё 5 фич EF Core тут
👉 @KodBlog
Разделение запросов (Query Splitting)
— Делит JOIN-запросы на несколько отдельных
— Может ускорить выполнение, особенно при сложных связях
Массовое обновление (Bulk Updates)
— Использует ExecuteUpdate для изменения множества сущностей
— Обновление идёт сразу в базу, мимо Unit of Work
Сырые SQL-запросы (Raw SQL)
— Подгружай сущности напрямую через SQL
— Полный контроль над запросом, можно юзать фичи SQL
Массовое удаление (Bulk Deletes)
— Через ExecuteDelete удаляешь пачку записей
— Тоже обходит Unit of Work и идёт сразу в базу
Игнорирование фильтров запросов (Ignore Query Filters)
— Фильтры позволяют скрывать строки по умолчанию
— Иногда нужно отключить, например, для админки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤1
Фишка в Visual Studio для C# разработчиков — быстрое превращение JSON в классы, без онлайн-сервисов:
Просто скопируй JSON, зайди в Edit → Paste Special → Paste JSON as Classes — и Visual Studio сама сгенерит нужные классы.
Удобно и мгновенно❤️
👉 @KodBlog
Просто скопируй JSON, зайди в Edit → Paste Special → Paste JSON as Classes — и Visual Studio сама сгенерит нужные классы.
Удобно и мгновенно
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥48👍11❤2
Rider 2025.1 получил несколько улучшений для работы с системой контроля версий
Теперь в представлении diff сразу отображаются детали коммита, а при обновлении удалённых репозиториев Git изменения подтягиваются автоматически
🔄 Держите свои репы в актуальном состоянии без лишних усилий
Дополнительные сведения о контроле версий можно найти — здесь
👉 @KodBlog
Теперь в представлении diff сразу отображаются детали коммита, а при обновлении удалённых репозиториев Git изменения подтягиваются автоматически
Дополнительные сведения о контроле версий можно найти — здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🥴1
В превью C# 14 теперь можно передавать непараметризированный универсальный тип в
Например,
Раньше можно было передавать только закрытые универсальные типы, такие как
💖
👉 @KodBlog
nameofНапример,
nameof(List<>) вернёт ListРаньше можно было передавать только закрытые универсальные типы, такие как
List<int>, чтобы получить ListPlease open Telegram to view this post
VIEW IN TELEGRAM
👍17😐7
Вот как завалить юнит-тестирование в C#
Пиши раздутые методы тестов. Если у теста такая структура:
→ Arrange 1
→ Act 1
→ Assert 1
→ Act 2
→ Assert 2
...
— он уже слишком большой. Такой тест проверяет сразу несколько сценариев, и если он упадёт — ты потратишь часы, разбираясь, почему.
Вместо этого пиши тесты по простой структуре:
→ Arrange
→ Act
→ Assert
Так ты сразу понимаешь, какой сценарий покрыт
Ты не Шекспир. Хватит писать тесты с множеством "действий".😇
👉 @KodBlog
Пиши раздутые методы тестов. Если у теста такая структура:
→ Arrange 1
→ Act 1
→ Assert 1
→ Act 2
→ Assert 2
...
— он уже слишком большой. Такой тест проверяет сразу несколько сценариев, и если он упадёт — ты потратишь часы, разбираясь, почему.
Вместо этого пиши тесты по простой структуре:
→ Arrange
→ Act
→ Assert
Так ты сразу понимаешь, какой сценарий покрыт
Ты не Шекспир. Хватит писать тесты с множеством "действий".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤨4❤1
В C# 14 (preview) допускается использование оператора условного доступа
Ранее нужно было проверять, не равен ли
В C# 14 метод
👉 @KodBlog
?. слева от присваивания.Ранее нужно было проверять, не равен ли
customer значению null перед присваиванием заказаВ C# 14 метод
GetCurrentOrder не вызывается, если customer равен nullPlease open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥4🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Одна из многих функций ReSharper, которые мне нравятся — это постфиксные шаблоны.
>
>
>
В версии 2025.1 появился новый шаблон —💖
👉 @KodBlog
>
logger.inject → вставит зависимость в конструктор>
Process().await → обернёт вызов в await>
someValue.return → добавит return someValue;В версии 2025.1 появился новый шаблон —
.inject. Теперь внедрять зависимости стало ещё быстрее Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥴4❤2
Вот 7 популярных репозиториев по архитектуре ПО (для .NET-разработчиков):
1. Эволюционная архитектура на примерах -> тык
2. Модульный монолит с DDD (предметно-ориентированным проектированием) -> тык
3. Стартер-кит на .NET 8 с поддержкой мультиарендности -> тык
4. Пример eCommerce-приложения на микросервисах в .NET -> тык
5. Пример архитектуры вертикальных срезов (Vertical Slice) -> тык
6. Шаблон .NET-приложения с чистой архитектурой -> тык
7. Пример приложения с гексагональной архитектурой -> тык
💖 — круто
👍 — сохранил
👉 @KodBlog
1. Эволюционная архитектура на примерах -> тык
2. Модульный монолит с DDD (предметно-ориентированным проектированием) -> тык
3. Стартер-кит на .NET 8 с поддержкой мультиарендности -> тык
4. Пример eCommerce-приложения на микросервисах в .NET -> тык
5. Пример архитектуры вертикальных срезов (Vertical Slice) -> тык
6. Шаблон .NET-приложения с чистой архитектурой -> тык
7. Пример приложения с гексагональной архитектурой -> тык
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥7❤2🐳1
Трассировка .NET-приложений с OpenTelemetry
Вы можете экспортировать телеметрию в Grafana, Seq, App Insights и другие.
Вот несколько библиотек OpenTelemetry для добавления в приложение:
> HttpClient
> AspNetCore
> EF Core
> Redis (StackExchange)
> PostgreSQL (Npgsql)
При запуске приложения вы сразу увидите трассировки от этих библиотек
OpenTelemetry позволяет глубже понять, как работает ваше приложение
Подробнее тут❤️
👉 @KodBlog
Вы можете экспортировать телеметрию в Grafana, Seq, App Insights и другие.
Вот несколько библиотек OpenTelemetry для добавления в приложение:
> HttpClient
> AspNetCore
> EF Core
> Redis (StackExchange)
> PostgreSQL (Npgsql)
При запуске приложения вы сразу увидите трассировки от этих библиотек
OpenTelemetry позволяет глубже понять, как работает ваше приложение
Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
В .NET 10 завозят
Наконец-то можно будет перемешивать
Зачем это нужно?
— случайный выбор без повторений
— data seeding
— игры, ML, генераторы тестов и т.п.
Микро-удобство, но то, что надо💯
> Ссылка на обсуждение:
https://github.com/dotnet/runtime/issues/111221
❤️ — ждем
👉 @KodBlog
Shuffle() для LINQНаконец-то можно будет перемешивать
IEnumerable<T> без OrderBy(_ => Guid.NewGuid()) и кастомных костылей.Зачем это нужно?
— случайный выбор без повторений
— data seeding
— игры, ML, генераторы тестов и т.п.
Микро-удобство, но то, что надо
> Ссылка на обсуждение:
https://github.com/dotnet/runtime/issues/111221
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥5❤2
Используй
Избегай
Почему?
> Ноль аллокаций
> Молниеносный доступ к памяти
> Идеально для кода с жёсткими требованиями к производительности
🤍
👉 @KodBlog
Span<T> для высокопроизводительного среза массивов без выделения памяти.Избегай
ToList(), если он не нужен Почему?
> Ноль аллокаций
> Молниеносный доступ к памяти
> Идеально для кода с жёсткими требованиями к производительности
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤3
Одна из крутых фич в Microsoft Visual Studio — External Tools
Они позволяют разработчику подключать свои утилиты > например, обновлять версию .NET Framework или автоматически добавлять NuGet-пакеты в
Мне надоело вручную подключать Serilog в новые проекты на
А для быстрой настройки Serilog в
> Проект: chekme👊
👉 @KodBlog
Они позволяют разработчику подключать свои утилиты > например, обновлять версию .NET Framework или автоматически добавлять NuGet-пакеты в
.csprojМне надоело вручную подключать Serilog в новые проекты на
ASP.NET Core, когда не используется кастомный шаблон. Вместо того чтобы писать скрипт самому — я просто попросил AI сгенерировать код.А для быстрой настройки Serilog в
Program.cs — использую шаблон ReSharper.> Проект: chekme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1
Dapper + SQL Server + вычисляемые столбцы
Хочешь, чтобы возраст считался сам? В этом примере —> таблица с датами рождения, где возраст считается прямо в SQL через computed column, а данные читаются через Dapper
> Без лишней логики в C#
> Лёгкая ORM
> Всё работает как обычное свойство
Репозиторий с примером: https://github.com/karenpayneoregon/sql-basics/tree/master/DapperBirthdaysComputedColumns❤️
👉 @KodBlog
Хочешь, чтобы возраст считался сам? В этом примере —> таблица с датами рождения, где возраст считается прямо в SQL через computed column, а данные читаются через Dapper
> Без лишней логики в C#
> Лёгкая ORM
> Всё работает как обычное свойство
Репозиторий с примером: https://github.com/karenpayneoregon/sql-basics/tree/master/DapperBirthdaysComputedColumns
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5
Следующая крупная версия Visual Studio выйдет позже в этом году.
Как думаете, как Microsoft её назовёт? И как должна бы назвать?😎
👉 @KodBlog
Как думаете, как Microsoft её назовёт? И как должна бы назвать?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🥴5🔥1
Месяц назад один .NET-разработчик спросил меня:
«Какие Azure-сертификации ты порекомендуешь, чтобы продвинуться в .NET-карьере?»
Я ответил уклончиво: «Это зависит от ситуации»
Но поскольку это ужасный ответ, давай поясню.
Сосредоточься на тех сертификациях, в областях которых у тебя уже есть опыт. Или в тех, в которых ты хочешь получить больше опыта.
Исходя из этого, можно выбрать:
> Направление безопасности
> Направление разработки
> Направление инфраструктуры
> Направление данных и аналитики
Но важно помнить вот что:
Сертификаты бесполезны без опыта.
Если ты списываешь на экзаменах, рано или поздно это всплывёт
Поэтому:
1. Опыт > Сертификатов
2. Опыт + Сертификаты = сильное сочетание
3. Как правильно подходить к сертификациям? Сначала набери опыт, потом получай сертификаты
❤️ — ну это база
👉 @KodBlog
«Какие Azure-сертификации ты порекомендуешь, чтобы продвинуться в .NET-карьере?»
Я ответил уклончиво: «Это зависит от ситуации»
Но поскольку это ужасный ответ, давай поясню.
Сосредоточься на тех сертификациях, в областях которых у тебя уже есть опыт. Или в тех, в которых ты хочешь получить больше опыта.
Исходя из этого, можно выбрать:
> Направление безопасности
> Направление разработки
> Направление инфраструктуры
> Направление данных и аналитики
Но важно помнить вот что:
Сертификаты бесполезны без опыта.
Если ты списываешь на экзаменах, рано или поздно это всплывёт
Поэтому:
1. Опыт > Сертификатов
2. Опыт + Сертификаты = сильное сочетание
3. Как правильно подходить к сертификациям? Сначала набери опыт, потом получай сертификаты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8😁2
Эффективная асинхронная передача данных
Когда работаешь с большими наборами данных — записями из базы, строками файлов и т.д. — не всегда хочется грузить всё в память сразу. Здесь отлично заходит
>
> Используй
> Данные подтягиваются лениво — обрабатываешь только то, что реально нужно
С
Преимущества:
1. экономия, даже на больших объёмах.
2. ничего не блокируется, UI не фризит
3. чисто и понятно, без колбэков и костылей💖
👉 @KodBlog
Когда работаешь с большими наборами данных — записями из базы, строками файлов и т.д. — не всегда хочется грузить всё в память сразу. Здесь отлично заходит
IAsyncEnumerable<T>>
IAsyncEnumerable<T> — позволяет стримить данные асинхронно, без блокировки потоков> Используй
yield return, чтобы возвращать элементы по одному> Данные подтягиваются лениво — обрабатываешь только то, что реально нужно
С
await foreach всё читается и обрабатывается по мере поступления, не блокируя выполнениеПреимущества:
1. экономия, даже на больших объёмах.
2. ничего не блокируется, UI не фризит
3. чисто и понятно, без колбэков и костылей
Please open Telegram to view this post
VIEW IN TELEGRAM
💯16👍7🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Режим GitHub Copilot Agent теперь доступен в preview для Visual Studio 17.14!
> Подробнее: msft.it/6012SZusi🤍
👉 @KodBlog
> Подробнее: msft.it/6012SZusi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
7 архитектур, которые стоит знать каждому разработчику
👉 @KodBlog
> Монолит
Всё в одном проекте. Легко развернуть и начать разработку, но с ростом системы поддержка становится сложной. Подходит для небольших или быстрых MVP.
> MVC
Классика веб-фреймворков. Модель, представление и контроллер. Работает отлично, если роли чётко разделены (спойлер: многие контроллеры в итоге становятся объектами-богами)
> Master-Slave (сейчас чаще говорят Leader-Follower)
Популярен в БД: один командует — остальные копируют. Увеличивает отказоустойчивость, но если синхронизация сломается — беда.
> Многослойная архитектура
Знаменитый “lasagna code”: слой представления, логики, доступа к данным, база. Хорошо структурирует, но если перегнуть — становится медленно и громоздко
> Микросервисы
Каждая функция живёт отдельно. Масштабируются отлично, но усложняется тестирование, логирование и деплой. Подход не для всех проектов.
> SOA (сервис-ориентированная архитектура)
Более формальный родственник микросервисов. Часто встречается в больших компаниях и старых системах. ESB (Enterprise Service Bus) сначала кажется полезным. пока не становится главным узким местом.
> Событийно-ориентированная архитектура
Идеальна для приложений в реальном времени. Всё основано на событиях. Очень мощная, но если что-то пойдёт не так.. найти баг — непросто
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤5