QlbrcTenantTrackedRepository.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.Diagnostics;
  2. using Quadarax.Application.QLiberace.Common.Domain;
  3. using Quadarax.Application.QLiberace.Common.Entities.Base;
  4. using Quadarax.Foundation.Core.Data;
  5. using Quadarax.Foundation.Core.Data.Domain;
  6. using Quadarax.Foundation.Core.Data.Extensions;
  7. using Quadarax.Foundation.Core.Data.Interface;
  8. using Quadarax.Foundation.Core.Data.Interface.Domain;
  9. namespace Quadarax.Application.QLiberace.Common.Repositories
  10. {
  11. public abstract class QlbrcTenantTrackedRepository<TEntity> :QlbrcTrackedRepository<TEntity> where TEntity : QlbrcEntityTenant, new()
  12. {
  13. protected long? TenantId => OperationContext.GetContext<QlbrcContext>().TenantId;
  14. protected QlbrcTenantTrackedRepository(IUnitOfWork<IDataDomain> unitOfWork, QlbrcContext operationContext) : base(unitOfWork, operationContext)
  15. {
  16. }
  17. public override IQueryable<TEntity> Query(IPaging paging,bool usingUncommited=false)
  18. {
  19. var result = base.Query(paging, usingUncommited).Where(x => Equals(x.TenantId ,TenantId));
  20. #if DEBUG
  21. Debug.WriteLine($"Repo '{GetType().Name}' Query returns {result.Count()} rows.");
  22. #endif
  23. return result;
  24. }
  25. public override TEntity Get(long id)
  26. {
  27. return Query(new Paging()).MultiInclude(DefaultIncludes.ToArray()).FirstOrDefault(x => Equals(x.Id, id) && Equals(x.TenantId,TenantId))!;
  28. }
  29. public override IQueryable<TEntity> Get(IEnumerable<long> ids)
  30. {
  31. return Query(new Paging()).Where(x => ids.Contains(x.Id) && Equals(x.TenantId,TenantId));
  32. }
  33. public override TEntity New()
  34. {
  35. var entity = base.New();
  36. entity.TenantId = TenantId.GetValueOrDefault();
  37. return entity;
  38. }
  39. }
  40. }