mirror of
https://github.com/oqtane/oqtane.framework.git
synced 2025-05-28 07:43:06 +00:00
Hard deletion of page more robust use of contexts (fixes issue: presence of stale records of deleted page on db).
This commit is contained in:
parent
290547e482
commit
29a1e77da8
@ -91,18 +91,29 @@ namespace Oqtane.Repository
|
||||
public void DeletePage(int pageId)
|
||||
{
|
||||
using var db = _dbContextFactory.CreateDbContext();
|
||||
var page = db.Page.Find(pageId);
|
||||
_permissions.DeletePermissions(page.SiteId, EntityNames.Page, pageId);
|
||||
_settings.DeleteSettings(EntityNames.Page, pageId);
|
||||
// remove page modules for page
|
||||
var pageModules = db.PageModule.Where(item => item.PageId == pageId).ToList();
|
||||
foreach (var pageModule in pageModules)
|
||||
{
|
||||
_pageModules.DeletePageModule(pageModule.PageModuleId);
|
||||
var page = db.Page.Find(pageId);
|
||||
_permissions.DeletePermissions(page.SiteId, EntityNames.Page, pageId);
|
||||
_settings.DeleteSettings(EntityNames.Page, pageId);
|
||||
// remove page modules for page
|
||||
var pageModules = db.PageModule.Where(item => item.PageId == pageId).ToList();
|
||||
foreach (var pageModule in pageModules)
|
||||
{
|
||||
_pageModules.DeletePageModule(pageModule.PageModuleId);
|
||||
}
|
||||
|
||||
// At this point the page item is unaware of changes happened in other
|
||||
// contexts (i.e.: the contex opened and closed in each DeletePageModule).
|
||||
// Workin on page item may result in unxpected behaviour:
|
||||
// better close and reopen context to work on a fresh page item.
|
||||
}
|
||||
|
||||
using var dbContext = _dbContextFactory.CreateDbContext();
|
||||
{
|
||||
var page = dbContext.Page.Find(pageId);
|
||||
dbContext.Page.Remove(page);
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
// must occur after page modules are deleted because of cascading delete relationship
|
||||
db.Page.Remove(page);
|
||||
db.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user