UnitOfWork, Repository pattern implementation for ASP.NET Core data accesss layer.
public class TodoDbContext : DataContextBase<TodoDbContext>
{
public TodoDbContext() : base() { }
public TodoDbContext(DbContextOptions<TodoDbContext> options) : base(options) { }
public DbSet<Todo> Todos { get; set; }
}
public void ConfigureServices(IServiceCollection services)
{
services.AddUnitOfWork<TodoDbContext, TodoDatabaseOptions>();
}
private readonly IUnitOfWork<TodoDbContext> _unitOfWork;
private readonly IRepository<Todo> _todoRepository;
public ToDosController(IUnitOfWork<TodoDbContext> unitOfWork)
{
_unitOfWork = unitOfWork;
_todoRepository = _unitOfWork.GetRepository<Todo>();
}
[HttpGet]
public async Task<IActionResult> GetTodos()
{
var result = await _todoRepository.AsQueryable().ToListAsync();
return Ok(result);
}