56 lines
1.8 KiB
C#
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
|
|
}
|
|
} |