using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Shared.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SewerStammGen.EntityFramework.Services.Common { class NonQueryDataService where T: DBObject { private readonly SewerStammGenDbContextFactory _contextFactory; public NonQueryDataService(SewerStammGenDbContextFactory contextFactory) { _contextFactory = contextFactory; } public async Task Create(T entity) { using SewerStammGenDbContext context = _contextFactory.CreateDbContext(); EntityEntry createdEntity = await context.Set().AddAsync(entity); await context.SaveChangesAsync(); return createdEntity.Entity; } public T CreateNonAsync(T entity) { using SewerStammGenDbContext context = _contextFactory.CreateDbContext(); EntityEntry createdEntity = context.Set().Add(entity); context.SaveChanges(); return createdEntity.Entity; } public async Task Delete(int id) { using SewerStammGenDbContext context = _contextFactory.CreateDbContext(); T? entity = await context.Set().FirstOrDefaultAsync((e) => e.Id == id); if (entity == null) return false; context.Set().Remove(entity); await context.SaveChangesAsync(); return true; } public async Task Update(int id, T entity) { using SewerStammGenDbContext context = _contextFactory.CreateDbContext(); entity.Id = id; context.Set().Update(entity); await context.SaveChangesAsync(); return entity; } } }