Untitled
unknown
plain_text
3 years ago
3.1 kB
11
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...