eager load Page associated to PageModule

This commit is contained in:
sbwalker 2024-06-27 17:05:22 -04:00
parent 03f081f3f4
commit 532890674e
2 changed files with 20 additions and 6 deletions

View File

@ -29,7 +29,8 @@ namespace Oqtane.Repository
{ {
using var db = _dbContextFactory.CreateDbContext(); using var db = _dbContextFactory.CreateDbContext();
var pagemodules = db.PageModule var pagemodules = db.PageModule
.Include(item => item.Module) // eager load modules .Include(item => item.Module) // eager load module
.Include(item => item.Page) // eager load page
.Where(item => item.Module.SiteId == siteId).ToList(); .Where(item => item.Module.SiteId == siteId).ToList();
if (pagemodules.Any()) if (pagemodules.Any())
{ {
@ -70,12 +71,16 @@ namespace Oqtane.Repository
PageModule pagemodule; PageModule pagemodule;
if (tracking) if (tracking)
{ {
pagemodule = db.PageModule.Include(item => item.Module) // eager load modules pagemodule = db.PageModule
.Include(item => item.Module) // eager load module
.Include(item => item.Page) // eager load page
.FirstOrDefault(item => item.PageModuleId == pageModuleId); .FirstOrDefault(item => item.PageModuleId == pageModuleId);
} }
else else
{ {
pagemodule = db.PageModule.AsNoTracking().Include(item => item.Module) // eager load modules pagemodule = db.PageModule.AsNoTracking()
.Include(item => item.Module) // eager load module
.Include(item => item.Page) // eager load page
.FirstOrDefault(item => item.PageModuleId == pageModuleId); .FirstOrDefault(item => item.PageModuleId == pageModuleId);
} }
if (pagemodule != null) if (pagemodule != null)
@ -90,7 +95,9 @@ namespace Oqtane.Repository
public PageModule GetPageModule(int pageId, int moduleId) public PageModule GetPageModule(int pageId, int moduleId)
{ {
using var db = _dbContextFactory.CreateDbContext(); using var db = _dbContextFactory.CreateDbContext();
var pagemodule = db.PageModule.Include(item => item.Module) // eager load modules var pagemodule = db.PageModule
.Include(item => item.Module) // eager load module
.Include(item => item.Page) // eager load page
.SingleOrDefault(item => item.PageId == pageId && item.ModuleId == moduleId); .SingleOrDefault(item => item.PageId == pageId && item.ModuleId == moduleId);
if (pagemodule != null) if (pagemodule != null)
{ {
@ -104,7 +111,9 @@ namespace Oqtane.Repository
public void DeletePageModule(int pageModuleId) public void DeletePageModule(int pageModuleId)
{ {
using var db = _dbContextFactory.CreateDbContext(); using var db = _dbContextFactory.CreateDbContext();
var pageModule = db.PageModule.Include(item => item.Module) // eager load modules var pageModule = db.PageModule
.Include(item => item.Module) // eager load module
.Include(item => item.Page) // eager load page
.SingleOrDefault(item => item.PageModuleId == pageModuleId); .SingleOrDefault(item => item.PageModuleId == pageModuleId);
_settings.DeleteSettings(EntityNames.PageModule, pageModuleId); _settings.DeleteSettings(EntityNames.PageModule, pageModuleId);
db.PageModule.Remove(pageModule); db.PageModule.Remove(pageModule);
@ -140,6 +149,7 @@ namespace Oqtane.Repository
} }
} }
pageModule.Module.PermissionList = permissions?.ToList(); pageModule.Module.PermissionList = permissions?.ToList();
return pageModule; return pageModule;
} }
} }

View File

@ -59,8 +59,12 @@ namespace Oqtane.Models
/// <summary> /// <summary>
/// The <see cref="Module"/> itself. /// The <see cref="Module"/> itself.
/// TODO: todoc - unclear if this is always populated
/// </summary> /// </summary>
public Module Module { get; set; } public Module Module { get; set; }
/// <summary>
/// The <see cref="Page"/> itself.
/// </summary>
public Page Page { get; set; }
} }
} }