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

Связь: @devmangx

РКН: https://clck.ru/3FocB6
Download Telegram
Идеальный приём для повышения продуктивности с EF Core:

Используй EF Core Power Tools

EF Core Power Tools — это расширение для Visual Studio, которое помогает в проектировании базы данных

Возможности:

— визуализируй свой DbContext в один клик
— генерируй SQL-скрипты создания таблиц на основе своих C# классов
— получай C# классы из баз данных Azure SQL, SQL Server, Postgres и MySQL
— просматривай статус миграций, добавляй новые и синхронизируй базу данных с моделью

EF Core Power Tools полезен при создании нового проекта с нуля

Но и при подключении к существующему проекту —
↳ чтобы быстро разобраться в структуре базы данных и связях.

Лайк если уже пробовал EF Core Power Tools 👍

P.S. На изображении выше показано, как выглядит сгенерированная диаграмма

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93😁2
Как человек, который годами рефакторил запутанные кодовые базы, скажу:

Начни использовать Guard Clauses (защитные условия).

→ Защитные условия сразу защищают твой код от некорректных состояний.
→ Они убирают глубокую вложенность, скрывающую бизнес-логику
→ Делают методы читаемыми и линейными — сверху вниз

Обрабатывай ошибки, пограничные случаи и некорректный ввод в самом начале метода

👍 — база
🔥 — спасибо

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥19🤯32
Как передать Tenant ID в мультиарендных (multitenant) приложениях?

У вас есть как минимум 3 варианта:

Заголовок запроса (Request header)
Cookie
JWT

В приведённом на фото примере кода Tenant ID извлекается из заголовка HTTP-запроса

Также есть и другие способы получить Tenant ID: передача через строку запроса (query string) или извлечение из claim в удостоверении пользователя

Использование claim-ов, скорее всего, будет самым безопасным способом

Вы даже можете получать Tenant ID из базы данных (но это повлияет на производительность)

После этого можно использовать EF Core для реализации фильтрации по Tenant.

—> Вот как это делается: читать

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Switch-выражения. Вы либо любите их, либо ненавидите

Но одно можно сказать точно:

Они используются в каждом проекте

И никуда не исчезнут.

Один простой способ упростить конструкцию switch — использовать switch-выражение.

Это способ сразу присвоить результат switch-конструкции переменной.

Смотрите пример на видео выше

А что предпочитаете вы: switch-оператор или switch-выражение? ☕️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍265😁2
Что нового в C# 14

Статья

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥1
Простой, хоть и не самый распространённый способ упростить условия if

—> используйте сопоставление с образцом по свойствам

Сопоставление с образцом по свойствам в C# — это мощный инструмент, который помогает упростить код и сделать его более понятным

👍 — база
🔥 — всё верно

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥23🤯53
Хочешь стать крутым разработчиком?

Разберись с конечными автоматами.

Вот определение для тех, кто любит точность:

"Конечный автомат — это математическая модель, которая используется для проектирования алгоритмов. Он получает входные данные и в зависимости от них переходит в другое состояние."


А если по-простому:

> Есть текущее состояние

> Происходит какое-то событие или действие

> Переход в новое состояние

Мы задаём все возможные состояния, переходы между ними и что эти переходы запускает

А дальше можно реализовать это как Saga — способ управления бизнес-логикой, которая тянется во времени

MassTransit
предлагает одну из самых удобных реализаций

Вот как можно начать: read

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥2😁2🤔1
BotSharp — мощный .NET-фреймворк для создания AI-агентов

Хочешь собрать собственного умного ассистента или интегрировать LLM в свой бизнес? Обрати внимание на BotSharp — это open-source фреймворк от SciSharp на .NET Core для создания AI-агентов и чат-ботов

👍 — как раз в тему
🔥 — лайк

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍203🤔2
Хочешь разрабатывать приложения в Azure? Запомни эти 3 типа облаков

> IAAS – Ты управляешь приложениями и данными, провайдер отвечает за «железо» и сеть.
> PAAS – Провайдер берёт на себя инфраструктуру и ОС, ты просто пишешь код.
> SAAS – Готовые приложения; минимум гибкости, максимум удобства

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
6
This media is not supported in your browser
VIEW IN TELEGRAM
Один простой хак для продуктивности умных C#-разработчиков

Создавай сразу несколько классов в Visual Studio

Как это сделать?

В окне «Добавить новый элемент» просто введи несколько названий классов, разделяя их запятыми

P.S. Смотри видео выше, как это работает

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍473
Многие неправильно понимают Clean Architecture

Я вижу одну и ту же ошибку снова и снова

Разработчики узнают про Clean Architecture, вдохновляются её идеями —
и сразу начинают лепить структуру проекта по знаменитой диаграмме

Но фишка вот в чём > Clean Architecture — это не про папки. Это про зависимости.

Саймон Браун даже написал «пропущенную главу» к книге дяди Боба, где как раз поднимает эту тему.

Но по какой-то причине главный смысл все равно теряется

Можно использовать Clean Architecture и без слоёв
Главное — правильно направлять зависимости

Вот два способа, как реально лучше структурировать приложение на Clean Architecture: читать

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍172
Пример SQL-запроса, который генерирует Entity Framework для вставки в SQL Server

Обрати внимание на использование оператора MERGE, который изначально предназначался для объединения двух таблиц

Такой подход выбран из соображений производительности 👍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🔥1
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