using EgwCoreLib.Lux.Data.DbModel.Utils; using Microsoft.EntityFrameworkCore; namespace EgwCoreLib.Lux.Data.Repository.Utils { public class GenClassRepository : BaseRepository, IGenClassRepository { #region Public Constructors public GenClassRepository(DataLayerContext db) : base(db) { } #endregion Public Constructors #region Public Methods public void Add(GenClassModel entity) => _db.DbSetGenClass.Add(entity); public async Task CountChildrenAsync(string classCod) { return await _db.DbSetGenVal.CountAsync(x => x.ClassCod == classCod); } public void Delete(GenClassModel entity) => _db.DbSetGenClass.Remove(entity); public async Task> GetAllWithNavAsync() { // EF Core 8 è già molto veloce, lasciamo che l'eccezione salga return await _db.DbSetGenClass .Include(o => o.GenValNav) .AsNoTracking() .ToListAsync(); } public async Task GetByCodeAsync(string code) => await _db.DbSetGenClass.FirstOrDefaultAsync(x => x.ClassCod == code); public void Update(GenClassModel entity) { // Recuperiamo l'entità tracciata dal context var trackedEntity = _db.DbSetGenClass.Local.FirstOrDefault(x => x.ClassCod == entity.ClassCod); if (trackedEntity != null) { // Aggiorna i valori dell'entità tracciata con quelli della nuova _db.Entry(trackedEntity).CurrentValues.SetValues(entity); } else { _db.DbSetGenClass.Update(entity); } } #endregion Public Methods } }