C# Portal | Программирование – Telegram
C# Portal | Программирование
14.9K subscribers
970 photos
118 videos
24 files
812 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для C#-разработчика

Связь: @devmangx

РКН: https://clck.ru/3FocB6
Download Telegram
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍201
Фишка в Visual Studio для C# разработчиков — быстрое превращение JSON в классы, без онлайн-сервисов:

Просто скопируй JSON, зайди в Edit → Paste Special → Paste JSON as Classes — и Visual Studio сама сгенерит нужные классы.

Удобно и мгновенно ❤️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥48👍112
Rider 2025.1 получил несколько улучшений для работы с системой контроля версий

Теперь в представлении diff сразу отображаются детали коммита, а при обновлении удалённых репозиториев Git изменения подтягиваются автоматически

🔄 Держите свои репы в актуальном состоянии без лишних усилий

Дополнительные сведения о контроле версий можно найти — здесь

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123🥴1
В превью C# 14 теперь можно передавать непараметризированный универсальный тип в nameof

Например, nameof(List<>) вернёт List

Раньше можно было передавать только закрытые универсальные типы, такие как List<int>, чтобы получить List

💖

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17😐7
Новая реализация JsonPatch с использованием System.Text.Json появится в ASP.NET Core 10 Preview 4! 💖

подробнее

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
Вот как завалить юнит-тестирование в C#

Пиши раздутые методы тестов. Если у теста такая структура:

→ Arrange 1
→ Act 1
→ Assert 1
→ Act 2
→ Assert 2
...

— он уже слишком большой. Такой тест проверяет сразу несколько сценариев, и если он упадёт — ты потратишь часы, разбираясь, почему.

Вместо этого пиши тесты по простой структуре:

→ Arrange
→ Act
→ Assert

Так ты сразу понимаешь, какой сценарий покрыт

Ты не Шекспир. Хватит писать тесты с множеством "действий". 😇

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤨41
В C# 14 (preview) допускается использование оператора условного доступа ?. слева от присваивания.

Ранее нужно было проверять, не равен ли customer значению null перед присваиванием заказа

В C# 14 метод GetCurrentOrder не вызывается, если customer равен null

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥4🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Одна из многих функций ReSharper, которые мне нравятся — это постфиксные шаблоны.

> logger.inject → вставит зависимость в конструктор
> Process().await → обернёт вызов в await
> someValue.return → добавит return someValue;

В версии 2025.1 появился новый шаблон — .inject. Теперь внедрять зависимости стало ещё быстрее 💖

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥182
This media is not supported in your browser
VIEW IN TELEGRAM
Писать на C# стало ещё приятнее

В Rider 2025.1 добавили поддержку preview-фич C# 14:

> Упрощение nameof(List<>)
> Преобразования в Span
> Модификаторы у параметров лямбд

Полный разбор тут 😍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥴42
Вот 7 популярных репозиториев по архитектуре ПО (для .NET-разработчиков):

1. Эволюционная архитектура на примерах -> тык

2. Модульный монолит с DDD (предметно-ориентированным проектированием) -> тык

3. Стартер-кит на .NET 8 с поддержкой мультиарендности -> тык

4. Пример eCommerce-приложения на микросервисах в .NET -> тык

5. Пример архитектуры вертикальных срезов (Vertical Slice) -> тык

6. Шаблон .NET-приложения с чистой архитектурой -> тык

7. Пример приложения с гексагональной архитектурой -> тык

💖 — круто
👍 — сохранил

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥72🐳1
Трассировка .NET-приложений с OpenTelemetry

Вы можете экспортировать телеметрию в Grafana, Seq, App Insights и другие.

Вот несколько библиотек OpenTelemetry для добавления в приложение:

> HttpClient
> AspNetCore
> EF Core
> Redis (StackExchange)
> PostgreSQL (Npgsql)

При запуске приложения вы сразу увидите трассировки от этих библиотек

OpenTelemetry позволяет глубже понять, как работает ваше приложение

Подробнее тут ❤️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
Вот 9 отличных библиотек, которые я использую в своих проектах:

> YARP
> Polly
> EF Core
> Refit
> Testcontainers
> OpenTelemetry
> FluentValidation
> xUnit
> Dapper

А какую библиотеку ты бы добавил в этот список? ☕️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1
В .NET 10 завозят Shuffle() для LINQ

Наконец-то можно будет перемешивать IEnumerable<T> без OrderBy(_ => Guid.NewGuid()) и кастомных костылей.

Зачем это нужно?

— случайный выбор без повторений
— data seeding
— игры, ML, генераторы тестов и т.п.

Микро-удобство, но то, что надо 💯

> Ссылка на обсуждение:
https://github.com/dotnet/runtime/issues/111221

❤️ — ждем

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥52
Используй Span<T> для высокопроизводительного среза массивов без выделения памяти.

Избегай ToList(), если он не нужен

Почему?

> Ноль аллокаций
> Молниеносный доступ к памяти
> Идеально для кода с жёсткими требованиями к производительности

🤍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍263
Одна из крутых фич в Microsoft Visual Studio — External Tools

Они позволяют разработчику подключать свои утилиты > например, обновлять версию .NET Framework или автоматически добавлять NuGet-пакеты в .csproj

Мне надоело вручную подключать Serilog в новые проекты на ASP.NET Core, когда не используется кастомный шаблон. Вместо того чтобы писать скрипт самому — я просто попросил AI сгенерировать код.

А для быстрой настройки Serilog в Program.cs — использую шаблон ReSharper.

> Проект: chekme 👊

👉 @KodBlog
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
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5
Следующая крупная версия Visual Studio выйдет позже в этом году.

Как думаете, как Microsoft её назовёт? И как должна бы назвать? 😎

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🥴5🔥1
Месяц назад один .NET-разработчик спросил меня:

«Какие Azure-сертификации ты порекомендуешь, чтобы продвинуться в .NET-карьере?»

Я ответил уклончиво: «Это зависит от ситуации»

Но поскольку это ужасный ответ, давай поясню.

Сосредоточься на тех сертификациях, в областях которых у тебя уже есть опыт. Или в тех, в которых ты хочешь получить больше опыта.

Исходя из этого, можно выбрать:

> Направление безопасности
> Направление разработки
> Направление инфраструктуры
> Направление данных и аналитики

Но важно помнить вот что:

Сертификаты бесполезны без опыта.

Если ты списываешь на экзаменах, рано или поздно это всплывёт

Поэтому:

1. Опыт > Сертификатов

2. Опыт + Сертификаты = сильное сочетание

3. Как правильно подходить к сертификациям? Сначала набери опыт, потом получай сертификаты

❤️ну это база

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
8😁2
Эффективная асинхронная передача данных

Когда работаешь с большими наборами данных — записями из базы, строками файлов и т.д. — не всегда хочется грузить всё в память сразу. Здесь отлично заходит IAsyncEnumerable<T>

> IAsyncEnumerable<T> — позволяет стримить данные асинхронно, без блокировки потоков
> Используй yield return, чтобы возвращать элементы по одному
> Данные подтягиваются лениво — обрабатываешь только то, что реально нужно

С await foreach всё читается и обрабатывается по мере поступления, не блокируя выполнение

Преимущества:

1. экономия, даже на больших объёмах.
2. ничего не блокируется, UI не фризит
3. чисто и понятно, без колбэков и костылей 💖

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
💯16👍7🔥31
This media is not supported in your browser
VIEW IN TELEGRAM
Режим GitHub Copilot Agent теперь доступен в preview для Visual Studio 17.14!

> Подробнее: msft.it/6012SZusi 🤍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
7 архитектур, которые стоит знать каждому разработчику

> Монолит
Всё в одном проекте. Легко развернуть и начать разработку, но с ростом системы поддержка становится сложной. Подходит для небольших или быстрых MVP.

> MVC
Классика веб-фреймворков. Модель, представление и контроллер. Работает отлично, если роли чётко разделены (спойлер: многие контроллеры в итоге становятся объектами-богами)

> Master-Slave (сейчас чаще говорят Leader-Follower)
Популярен в БД: один командует — остальные копируют. Увеличивает отказоустойчивость, но если синхронизация сломается — беда.

> Многослойная архитектура
Знаменитый “lasagna code”: слой представления, логики, доступа к данным, база. Хорошо структурирует, но если перегнуть — становится медленно и громоздко

> Микросервисы
Каждая функция живёт отдельно. Масштабируются отлично, но усложняется тестирование, логирование и деплой. Подход не для всех проектов.

> SOA (сервис-ориентированная архитектура)
Более формальный родственник микросервисов. Часто встречается в больших компаниях и старых системах. ESB (Enterprise Service Bus) сначала кажется полезным. пока не становится главным узким местом.

> Событийно-ориентированная архитектура
Идеальна для приложений в реальном времени. Всё основано на событиях. Очень мощная, но если что-то пойдёт не так.. найти баг — непросто


👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥105