Untitled
unknown
plain_text
3 years ago
3.1 kB
5
Indexable
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AutoMapper; using Company.Data.Interfaces; using Company.Data.Contexts; using Microsoft.EntityFrameworkCore; using System.Linq.Expressions; using Microsoft.EntityFrameworkCore.Query.SqlExpressions; namespace Company.Data.Services { public class DbService : IDbService { private readonly CompanyContext _db; private readonly IMapper _mapper; public DbService(CompanyContext db, IMapper mapper) => (_db, _mapper) = (db, mapper); public async Task<List<TDto>> GetAsync<TEntity, TDto>() where TEntity : class, IEntity where TDto : class { var entities = await _db.Set<TEntity>().ToListAsync(); return _mapper.Map<List<TDto>>(entities); } private async Task<TEntity?> SingleAsync<TEntity>(Expression<Func<TEntity, bool>> expression) where TEntity : class, IEntity => await _db.Set<TEntity>().SingleOrDefaultAsync(expression); public async Task<TDto> SingleAsync<TEntity, TDto>(Expression<Func<TEntity, bool>> expression) where TEntity : class, IEntity where TDto : class { var entity = await SingleAsync(expression); return _mapper.Map<TDto>(entity); } async Task<bool> IDbService.AnyAsync<TEntity>(Expression<Func<TEntity, bool>> expression) { var entity = await _db.Set<TEntity>().AnyAsync(expression); return true; } async public Task<bool> SaveChangesAsync() { var entity = await _db.SaveChangesAsync() >= 0; return true; } async public Task<TEntity> AddAsync<TEntity, TDto>(TDto dto) where TEntity : class where TDto : class { var entity = _mapper.Map<TEntity>(dto); await _db.Set<TEntity>().AddAsync(entity); return entity; } void IDbService.Update<TEntity, TDto>(int id, TDto dto) { var entity = _mapper.Map<TEntity>(dto); entity.Id = id; _db.Set<TEntity>().Update(entity); } public async Task<bool> DeleteAsync<TEntity>(int id) where TEntity : class, IEntity //7.17 { try { var entity = await SingleAsync<TEntity>(e => e.Id.Equals(id)); if (entity is null) return false; _db.Remove(entity); } catch { throw; } return true; } public bool Delete<TReferenceEntity, TDto>(TDto dto) where TReferenceEntity : class where TDto : class { try { var entity = _mapper.Map<TReferenceEntity>(dto); if (entity is null) return false; _db.Remove(entity); } catch { throw; } return true; } } }
Editor is loading...