русский
Germany.ruForen → Архив Досок→ Programmierung

Где разрешать свободу?

11.05.23 20:29
Где разрешать свободу?
 
AlexNek патриот
AlexNek

Абстракцию вроде не очень любят, поэтому начну с конкретики.

Есть такая штука как ContextFactory (заголовок Using a DbContext factory)

https://learn.microsoft.com/en-us/ef/core/dbcontext-config...


Varaint 1

public class MyDbRepository: IMyDbRepository
{
    private readonly IDbContextFactory<ApplicationDbContext> _contextFactory;
    public MyController(IDbContextFactory<ApplicationDbContext> contextFactory)
    {
        _contextFactory = contextFactory;
    }
    public void DoSomething()
    {
        using (var context = _contextFactory.CreateDbContext())
        {
            // ...
        }
    }
}

Variant 2

public class MyDbRepository: IMyDbRepository
{
    private readonly ApplicationDbContext _context;
    public MyController(ApplicationDbContext context)
    {
        _context = context;
    }
    public void DoSomething()
    {
        {
            // use _context...
        }
    }
}
...application part....
IMyDbRepository repo= 'over DI';
using(ApplicationDbContext  context = GetContextFromFacroty())
{
   repo.Dosomething
}

В варинте 1 свобода на уровне репозитория. В варинте 2 - свобода на уровне приложения.


Что выбираем и почему?

 

Sprung zu