using Microsoft.EntityFrameworkCore; using SewerStammGen.EntityFramework.Services.Common; using Shared.Contracts; using Shared.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SewerStammGen.EntityFramework.Services { public class GenericDataService : IDataService where T : DBObject { private readonly SewerStammGenDbContextFactory _contextFactory; private readonly NonQueryDataService _nonQueryDataService; public GenericDataService(SewerStammGenDbContextFactory contextFactory) { _contextFactory = contextFactory; _nonQueryDataService = new NonQueryDataService(contextFactory); } public async Task Create(T entity) { return await _nonQueryDataService.Create(entity); } public T CreateNonAsync(T entity) { return _nonQueryDataService.CreateNonAsync(entity); } public async Task Delete(int id) { return await (_nonQueryDataService.Delete(id)); } public async Task Get(int id) { using(SewerStammGenDbContext context = _contextFactory.CreateDbContext()) { T entity = await context.Set().FirstOrDefaultAsync((e) => e.Id == id); return entity; } } public async Task> GetAll() { using (SewerStammGenDbContext context = _contextFactory.CreateDbContext()) { IEnumerable entities = await context.Set().ToListAsync(); return entities; } } public async Task Update(int id, T entity) { return await _nonQueryDataService.Update(id, entity); } T IDataService.CreateNonAsync(T entity) { return _nonQueryDataService.CreateNonAsync(entity); } } }