Login
Где разрешать свободу?
717 просмотров
Перейти к просмотру всей ветки
Абстракцию вроде не очень любят, поэтому начну с конкретики.
Есть такая штука как ContextFactory (заголовок Using a DbContext factory)
https://learn.microsoft.com/en-us/ef/core/dbcontext-config...
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 - свобода на уровне приложения.
Что выбираем и почему?
