Skip to content

Instantly share code, notes, and snippets.

@dkreider
Created May 22, 2021 15:04
Show Gist options
  • Save dkreider/374c19c08b0479344c40d683c723cdd9 to your computer and use it in GitHub Desktop.
Save dkreider/374c19c08b0479344c40d683c723cdd9 to your computer and use it in GitHub Desktop.
Learn how to create a base controller in ASP.NET core here - https://danielk.tech
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
namespace BaseController.Controllers
{
[ApiController]
public class BaseController<TEntity> : ControllerBase where TEntity : BaseModel
{
protected readonly BaseControllerDBContext _context;
protected DbSet<TEntity> _dbSet { get; set; }
public BaseController(BaseControllerDBContext context)
{
_context = context;
_dbSet = _context.Set<TEntity>();
}
[HttpGet]
public virtual async Task<IEnumerable<TEntity>> GetAllAsync()
{
return await _dbSet.ToListAsync();
}
[HttpGet("{id}")]
public virtual async Task<TEntity> GetAsync(Guid id)
{
return await _dbSet.Where(e => e.Id == id).FirstOrDefaultAsync();
}
[HttpDelete("{id}")]
public virtual async Task DeleteAsync(Guid id)
{
var entity = await _dbSet.Where(e => e.Id == id).FirstOrDefaultAsync();
_dbSet.Remove(entity);
await _context.SaveChangesAsync();
}
[HttpPost]
public virtual async Task<TEntity> CreateAsync(TEntity entity)
{
await _dbSet.AddAsync(entity);
await _context.SaveChangesAsync();
return entity;
}
[HttpPost]
public virtual async Task<TEntity> UpdateAsync(TEntity entity)
{
_dbSet.Update(entity);
await _context.SaveChangesAsync();
return entity;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment