Add VwmyCatalog view entity and update repository usage

Introduce VwmyCatalog as a keyless entity mapped to the VWMY_CATALOG database view. Update ApplicationDbContext to include the new DbSet and configure its mapping. Modify CatalogRepository to query the view instead of the table for GetAllAsync and GetByIdAsync. Add AutoMapper configuration for VwmyCatalog to Catalog. Add the VwmyCatalog entity class.
This commit is contained in:
OlgunR
2026-01-12 17:00:37 +01:00
parent 97eea94090
commit ce40abe20f
4 changed files with 55 additions and 4 deletions

View File

@@ -11,6 +11,7 @@ public partial class ApplicationDbContext : DbContext
}
public virtual DbSet<TbmyCatalog> TbmyCatalogs { get; set; }
public virtual DbSet<VwmyCatalog> VwmyCatalogs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
@@ -49,6 +50,37 @@ public partial class ApplicationDbContext : DbContext
.HasColumnName("CHANGED_WHO");
});
modelBuilder.Entity<VwmyCatalog>(entity =>
{
entity.HasNoKey();
entity.ToView("VWMY_CATALOG");
entity.Property(e => e.Guid).HasColumnName("GUID");
entity.Property(e => e.AddedWho)
.HasMaxLength(30)
.IsUnicode(false)
.HasColumnName("ADDED_WHO");
entity.Property(e => e.AddedWhen)
.HasColumnType("datetime")
.HasColumnName("ADDED_WHEN");
entity.Property(e => e.CatString)
.HasMaxLength(900)
.IsUnicode(false)
.HasColumnName("CAT_STRING");
entity.Property(e => e.CatTitle)
.HasMaxLength(100)
.IsUnicode(false)
.HasColumnName("CAT_TITLE");
entity.Property(e => e.ChangedWhen)
.HasColumnType("datetime")
.HasColumnName("CHANGED_WHEN");
entity.Property(e => e.ChangedWho)
.HasMaxLength(30)
.IsUnicode(false)
.HasColumnName("CHANGED_WHO");
});
OnModelCreatingPartial(modelBuilder);
}

View File

@@ -9,5 +9,6 @@ public class CatalogInfrastructureProfile : Profile
public CatalogInfrastructureProfile()
{
CreateMap<TbmyCatalog, Catalog>().ReverseMap();
CreateMap<VwmyCatalog, Catalog>();
}
}

View File

@@ -21,14 +21,14 @@ public class CatalogRepository : ICatalogRepository
public async Task<List<Catalog>> GetAllAsync(CancellationToken cancellationToken = default)
{
var entities = await _db.TbmyCatalogs.AsNoTracking().ToListAsync(cancellationToken);
return _mapper.Map<List<Catalog>>(entities);
var viewRows = await _db.VwmyCatalogs.AsNoTracking().ToListAsync(cancellationToken);
return _mapper.Map<List<Catalog>>(viewRows);
}
public async Task<Catalog?> GetByIdAsync(int id, CancellationToken cancellationToken = default)
{
var entity = await _db.TbmyCatalogs.AsNoTracking().FirstOrDefaultAsync(x => x.Guid == id, cancellationToken);
return entity == null ? null : _mapper.Map<Catalog>(entity);
var viewRow = await _db.VwmyCatalogs.AsNoTracking().FirstOrDefaultAsync(x => x.Guid == id, cancellationToken);
return viewRow == null ? null : _mapper.Map<Catalog>(viewRow);
}
public async Task<Catalog> AddAsync(Catalog catalog, CancellationToken cancellationToken = default)

View File

@@ -0,0 +1,18 @@
namespace DbFirst.Infrastructure.ScaffoldEntities;
public partial class VwmyCatalog
{
public int Guid { get; set; }
public string CatTitle { get; set; } = null!;
public string CatString { get; set; } = null!;
public string AddedWho { get; set; } = null!;
public DateTime AddedWhen { get; set; }
public string? ChangedWho { get; set; }
public DateTime? ChangedWhen { get; set; }
}