Files
lux/EgwCoreLib.Lux.Data/Repository/Utils/GenClassRepository.cs
T

56 lines
1.8 KiB
C#

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<int> CountChildrenAsync(string classCod)
{
return await _db.DbSetGenVal.CountAsync(x => x.ClassCod == classCod);
}
public void Delete(GenClassModel entity) => _db.DbSetGenClass.Remove(entity);
public async Task<List<GenClassModel>> 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<GenClassModel?> 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
}
}