Skip to content

ErcanOPAK.com

  • ASP.Net WebForms
  • ASP.Net MVC
  • C#
  • SQL
  • MySQL
  • PHP
  • Devexpress
  • Reportviewer
  • About
Asp.Net Core / C#

Clean Dependency Injection — Lifetimes That Every Dev Must Master

- 05.12.25 - ErcanOPAK

⏳ The 3 Lifetimes

  • 🔵 Singleton → stateless global services

  • 🟢 Scoped → per-request (web default)

  • 🟠 Transient → lightweight, multi-instance

❌ Absolute Rule

Never inject a Scoped service into a Singleton.

Bad:

builder.Services.AddSingleton<MyService>(); // depends on DbContext ❌

✔ Correct

Use factory:

builder.Services.AddSingleton<MyService>(sp =>
    new MyService(sp.GetRequiredService<IDbContextFactory<AppDb>>()));

🧠 Why?

  • Prevents stale data

  • Eliminates threading issues

  • Perfect for background workers

Related posts:

Function with variable number of arguments in C#

@helpers in Asp.NET MVC Razor

How to add placeholder to Multiple Selection DropDownList in Asp.Net MVC

Define a Default Value when insert New Record From ASPxGridView

Post Views: 0

Post navigation

EF Core: ExecuteUpdate & ExecuteDelete — Why You Should Stop Looping
The Hidden Killer: Scalar Functions — How to Avoid Massive Slowdowns

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

December 2025
M T W T F S S
1234567
891011121314
15161718192021
22232425262728
293031  
« Nov    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (915)
  • Get the First and Last Word from a String or Sentence in SQL (798)
  • How to add default value for Entity Framework migrations for DateTime and Bool (772)
  • How to select distinct rows in a datatable in C# (771)
  • How to make theater mode the default for Youtube (573)
  • Add Constraint to SQL Table to ensure email contains @ (558)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (530)
  • Average of all values in a column that are not zero in SQL (505)
  • Find numbers with more than two decimal places in SQL (421)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (414)

Recent Posts

  • The Secret Weapon: APPLY — Why CROSS APPLY Beats Subqueries
  • Indexing Superpowers: The 5 Index Types Every Dev Should Know
  • Parameter Sniffing — The #1 SQL Server Mystery You Must Understand
  • Never Use SELECT * in Production — Here’s Why It Destroys Performance
  • The Hidden Killer: Scalar Functions — How to Avoid Massive Slowdowns
  • Clean Dependency Injection — Lifetimes That Every Dev Must Master
  • EF Core: ExecuteUpdate & ExecuteDelete — Why You Should Stop Looping
  • C# Records — Why They Still Beat Classes for Domain Models
  • .NET 9 Rate Limiting — Easy API Protection
  • Async Streams in C# — Clean, Fast, Real-Time Data

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (915)
  • Get the First and Last Word from a String or Sentence in SQL (798)
  • How to add default value for Entity Framework migrations for DateTime and Bool (772)
  • How to select distinct rows in a datatable in C# (771)
  • How to make theater mode the default for Youtube (573)

Recent Posts

  • The Secret Weapon: APPLY — Why CROSS APPLY Beats Subqueries
  • Indexing Superpowers: The 5 Index Types Every Dev Should Know
  • Parameter Sniffing — The #1 SQL Server Mystery You Must Understand
  • Never Use SELECT * in Production — Here’s Why It Destroys Performance
  • The Hidden Killer: Scalar Functions — How to Avoid Massive Slowdowns

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2025 ErcanOPAK.com | Built with Xblog Plus free WordPress theme by wpthemespace.com