C#razy
99 subscribers
215 photos
46 videos
2 files
345 links
Путь в IT, рост, менторство, поддержка, прокачка, мотивация

👨‍💻 Senior .NET dev с 12+ лет опыта
📚 Учусь в MIT по Computer Science
🖥 100+ дней подряд LeetCode
⚒️ Работаю на зарубеж
💻 Веду блог про рост в IT с нуля
🧭 Помогаю понять, куда двигаться
Download Telegram
EF Core единым: как LINQ to DB спасает, когда EF уже не тянет

Есть отличное видео о ORM от Алексей Фадеев рассказал, как LINQ to DB (linq2db) может быть настоящим спасением, когда Entity Framework Core начинает тормозить — Привет от BULK операций и сложных условий обновления.

➡️ В чём EF Core не хорош?
Иногда страдает от медленной инициализации
Нет удобной поддержки bulk insert/update
Ограниченные возможности при сложных SQL-операциях

➡️ В чём linq2db хорош?
Так же не нужно создавать объект если хотите сделать просто update
просто SQL уровня UPDATE ... SET ... FROM ... WHERE ....
await db.Companies
.Where(c => c.Name == null)
.Set(c => c.Name, c => c.Director + "'s company")
.UpdateAsync();


Вставка сотен тысяч строк в linq2db: PostgreSQL и метод COPY
Если у вас PostgreSQL и вы вставляете кучу строк — забудьте про AddRange и SaveChanges 🥹
await db.BulkCopyAsync(new BulkCopyOptions
{
TableName = "Passengers",
KeepIdentity = true
}, passengersList);


Insert from select, merge и временные таблицы
LINQ to DB позволяет делать вещи, которые в EF либо невозможно, либо надо "танцевать с бубном"


Так же для MERGE можно использовать специальный DSL или выполнять кастомный SQL напрямую — и всё это в транзакции EF.
await db.Into(db.NewTable)
.Insert(
from o in db.OldTable
where o.IsActive
select new NewTable { Id = o.Id, Name = o.Name });


var sql = @"select * from tickets where departure_time > now()";
var result = await db.FromSql(sql).ToListAsync();


➡️ Что ещё интересного в linq2db?
- Использование разных isolation levels для тонкой настройки транзакций
- Обходить блокировки строк с помощью "skip locked"
- Почему EF тормозит из-за инициализации, а LINQ to DB — нет 🫠
- Как расширить LINQ to DB для PostgreSQL-специфичных фич (full-text search, @> и т.п.)

📝Итого
У меня был опыт с linq2db, но довольно печальный. Во-первых небыло ещё chatgpt)) и практически нет документации. Тем не менее, если вы работаете с большими объемами данных, сложной бизнес-логикой и хотите контролировать SQL на выходе — присмотритесь к LINQ to DB. Это не просто "альтернатива", это — швейцарский нож для разработчика, уставшего от "магии" ORM.

Ссылка: YouTube

#EFCore
#LINQtoDB
#PostgreSQL
#dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍521