diff --git a/Oqtane.Server/Repository/FileRepository.cs b/Oqtane.Server/Repository/FileRepository.cs index b20c9ecf..a589e8c9 100644 --- a/Oqtane.Server/Repository/FileRepository.cs +++ b/Oqtane.Server/Repository/FileRepository.cs @@ -13,7 +13,6 @@ namespace Oqtane.Repository public class FileRepository : IFileRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; private readonly IPermissionRepository _permissions; private readonly IFolderRepository _folderRepository; private readonly ITenantManager _tenants; @@ -21,7 +20,6 @@ namespace Oqtane.Repository public FileRepository(IDbContextFactory dbContextFactory, IPermissionRepository permissions, IFolderRepository folderRepository, ITenantManager tenants) { _dbContextFactory = dbContextFactory; - _queryContext = dbContextFactory.CreateDbContext(); _permissions = permissions; _folderRepository = folderRepository; _tenants = tenants; @@ -34,20 +32,21 @@ namespace Oqtane.Repository public IEnumerable GetFiles(int folderId, bool tracking) { + using var db = _dbContextFactory.CreateDbContext(); var folder = _folderRepository.GetFolder(folderId, false); - IEnumerable permissions = _permissions.GetPermissions(folder.SiteId, EntityNames.Folder, folderId).ToList(); + var permissions = _permissions.GetPermissions(folder.SiteId, EntityNames.Folder, folderId).ToList(); IEnumerable files; if (tracking) { - files = _queryContext.File.Where(item => item.FolderId == folderId).Include(item => item.Folder); + files = db.File.Where(item => item.FolderId == folderId).Include(item => item.Folder).ToList(); } else { - files = _queryContext.File.AsNoTracking().Where(item => item.FolderId == folderId).Include(item => item.Folder); + files = db.File.AsNoTracking().Where(item => item.FolderId == folderId).Include(item => item.Folder).ToList(); } - foreach (File file in files) + foreach (var file in files) { file.Folder.PermissionList = permissions.ToList(); var alias = _tenants.GetAlias(); diff --git a/Oqtane.Server/Repository/FolderRepository.cs b/Oqtane.Server/Repository/FolderRepository.cs index a4a1e34e..c4dfb8ed 100644 --- a/Oqtane.Server/Repository/FolderRepository.cs +++ b/Oqtane.Server/Repository/FolderRepository.cs @@ -12,7 +12,6 @@ namespace Oqtane.Repository public class FolderRepository : IFolderRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; private readonly IPermissionRepository _permissions; private readonly IWebHostEnvironment _environment; private readonly ITenantManager _tenants; @@ -20,7 +19,6 @@ namespace Oqtane.Repository public FolderRepository(IDbContextFactory dbContextFactory, IPermissionRepository permissions,IWebHostEnvironment environment, ITenantManager tenants) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); _permissions = permissions; _environment = environment; _tenants = tenants; @@ -28,8 +26,9 @@ namespace Oqtane.Repository public IEnumerable GetFolders(int siteId) { + using var db = _dbContextFactory.CreateDbContext(); var permissions = _permissions.GetPermissions(siteId, EntityNames.Folder).ToList(); - var folders = _queryContext.Folder.Where(item => item.SiteId == siteId); + var folders = db.Folder.Where(item => item.SiteId == siteId).ToList(); foreach (var folder in folders) { folder.PermissionList = permissions.Where(item => item.EntityId == folder.FolderId).ToList(); diff --git a/Oqtane.Server/Repository/LanguageRepository.cs b/Oqtane.Server/Repository/LanguageRepository.cs index 7ff1a865..6eac5559 100644 --- a/Oqtane.Server/Repository/LanguageRepository.cs +++ b/Oqtane.Server/Repository/LanguageRepository.cs @@ -8,17 +8,16 @@ namespace Oqtane.Repository public class LanguageRepository : ILanguageRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; public LanguageRepository(IDbContextFactory dbContextFactory) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); } public IEnumerable GetLanguages(int siteId) { - return _queryContext.Language.Where(l => l.SiteId == siteId); + using var db = _dbContextFactory.CreateDbContext(); + return db.Language.Where(l => l.SiteId == siteId).ToList(); } public Language AddLanguage(Language language) diff --git a/Oqtane.Server/Repository/LogRepository.cs b/Oqtane.Server/Repository/LogRepository.cs index 95fe0ced..6c388f15 100644 --- a/Oqtane.Server/Repository/LogRepository.cs +++ b/Oqtane.Server/Repository/LogRepository.cs @@ -9,36 +9,35 @@ namespace Oqtane.Repository public class LogRepository : ILogRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; public LogRepository(IDbContextFactory dbContextFactory) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); } public IEnumerable GetLogs(int siteId, string level, string function, int rows) { + using var db = _dbContextFactory.CreateDbContext(); if (level == null) { if (function == null) { - return _queryContext.Log.Where(item => item.SiteId == siteId). - OrderByDescending(item => item.LogDate).Take(rows); + return db.Log.Where(item => item.SiteId == siteId). + OrderByDescending(item => item.LogDate).Take(rows).ToList(); } - return _queryContext.Log.Where(item => item.SiteId == siteId && item.Function == function). - OrderByDescending(item => item.LogDate).Take(rows); + return db.Log.Where(item => item.SiteId == siteId && item.Function == function). + OrderByDescending(item => item.LogDate).Take(rows).ToList(); } if (function == null) { - return _queryContext.Log.Where(item => item.SiteId == siteId && item.Level == level) - .OrderByDescending(item => item.LogDate).Take(rows); + return db.Log.Where(item => item.SiteId == siteId && item.Level == level) + .OrderByDescending(item => item.LogDate).Take(rows).ToList(); } - return _queryContext.Log.Where(item => item.SiteId == siteId && item.Level == level && item.Function == function) - .OrderByDescending(item => item.LogDate).Take(rows); + return db.Log.Where(item => item.SiteId == siteId && item.Level == level && item.Function == function) + .OrderByDescending(item => item.LogDate).Take(rows).ToList(); } public Log GetLog(int logId) diff --git a/Oqtane.Server/Repository/ModuleRepository.cs b/Oqtane.Server/Repository/ModuleRepository.cs index 325ae8a0..4d4a7e4e 100644 --- a/Oqtane.Server/Repository/ModuleRepository.cs +++ b/Oqtane.Server/Repository/ModuleRepository.cs @@ -15,7 +15,6 @@ namespace Oqtane.Repository public class ModuleRepository : IModuleRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; private readonly IPermissionRepository _permissions; private readonly ISettingRepository _settings; private readonly IModuleDefinitionRepository _moduleDefinitions; @@ -24,7 +23,6 @@ namespace Oqtane.Repository public ModuleRepository(IDbContextFactory dbContextFactory, IPermissionRepository permissions, ISettingRepository settings, IModuleDefinitionRepository moduleDefinitions, IServiceProvider serviceProvider) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); _permissions = permissions; _settings = settings; _moduleDefinitions = moduleDefinitions; @@ -33,7 +31,8 @@ namespace Oqtane.Repository public IEnumerable GetModules(int siteId) { - return _queryContext.Module.Where(item => item.SiteId == siteId); + using var db = _dbContextFactory.CreateDbContext(); + return db.Module.Where(item => item.SiteId == siteId).ToList(); } public Module AddModule(Module module) diff --git a/Oqtane.Server/Repository/PageRepository.cs b/Oqtane.Server/Repository/PageRepository.cs index 2760bceb..4bad39e3 100644 --- a/Oqtane.Server/Repository/PageRepository.cs +++ b/Oqtane.Server/Repository/PageRepository.cs @@ -10,7 +10,6 @@ namespace Oqtane.Repository public class PageRepository : IPageRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; private readonly IPageModuleRepository _pageModules; private readonly IPermissionRepository _permissions; private readonly ISettingRepository _settings; @@ -18,7 +17,6 @@ namespace Oqtane.Repository public PageRepository(IDbContextFactory dbContextFactory, IPageModuleRepository pageModules, IPermissionRepository permissions, ISettingRepository settings) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); _pageModules = pageModules; _permissions = permissions; _settings = settings; @@ -26,8 +24,9 @@ namespace Oqtane.Repository public IEnumerable GetPages(int siteId) { + using var db = _dbContextFactory.CreateDbContext(); var permissions = _permissions.GetPermissions(siteId, EntityNames.Page).ToList(); - var pages = _queryContext.Page.Where(item => item.SiteId == siteId && item.UserId == null); + var pages = db.Page.Where(item => item.SiteId == siteId && item.UserId == null).ToList(); foreach (var page in pages) { page.PermissionList = permissions.Where(item => item.EntityId == page.PageId).ToList(); diff --git a/Oqtane.Server/Repository/ProfileRepository.cs b/Oqtane.Server/Repository/ProfileRepository.cs index 9e067b30..8e0b895a 100644 --- a/Oqtane.Server/Repository/ProfileRepository.cs +++ b/Oqtane.Server/Repository/ProfileRepository.cs @@ -8,17 +8,16 @@ namespace Oqtane.Repository public class ProfileRepository : IProfileRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; public ProfileRepository(IDbContextFactory dbContextFactory) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); } public IEnumerable GetProfiles(int siteId) { - return _queryContext.Profile.Where(item => item.SiteId == siteId || item.SiteId == null); + using var db = _dbContextFactory.CreateDbContext(); + return db.Profile.Where(item => item.SiteId == siteId || item.SiteId == null).ToList(); } public Profile AddProfile(Profile profile) diff --git a/Oqtane.Server/Repository/RoleRepository.cs b/Oqtane.Server/Repository/RoleRepository.cs index 575356df..1c4aa0c4 100644 --- a/Oqtane.Server/Repository/RoleRepository.cs +++ b/Oqtane.Server/Repository/RoleRepository.cs @@ -8,12 +8,10 @@ namespace Oqtane.Repository public class RoleRepository : IRoleRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; public RoleRepository(IDbContextFactory dbContextFactory) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); } public IEnumerable GetRoles(int siteId) @@ -23,13 +21,14 @@ namespace Oqtane.Repository public IEnumerable GetRoles(int siteId, bool includeGlobalRoles) { + using var db = _dbContextFactory.CreateDbContext(); if (includeGlobalRoles) { - return _queryContext.Role.Where(item => item.SiteId == siteId || item.SiteId == null); + return db.Role.Where(item => item.SiteId == siteId || item.SiteId == null).ToList(); } else { - return _queryContext.Role.Where(item => item.SiteId == siteId); + return db.Role.Where(item => item.SiteId == siteId).ToList(); } } diff --git a/Oqtane.Server/Repository/SettingRepository.cs b/Oqtane.Server/Repository/SettingRepository.cs index 53a6f450..07a2da6d 100644 --- a/Oqtane.Server/Repository/SettingRepository.cs +++ b/Oqtane.Server/Repository/SettingRepository.cs @@ -12,7 +12,6 @@ namespace Oqtane.Repository public class SettingRepository : ISettingRepository { private readonly IDbContextFactory _tenantContextFactory; - private readonly TenantDBContext _tenantQueryContext; private MasterDBContext _master; private readonly ITenantManager _tenantManager; private readonly IMemoryCache _cache; @@ -20,7 +19,6 @@ namespace Oqtane.Repository public SettingRepository(IDbContextFactory tenantContextFactory, MasterDBContext master, ITenantManager tenantManager, IMemoryCache cache) { _tenantContextFactory = tenantContextFactory; - _tenantQueryContext = tenantContextFactory.CreateDbContext(); _master = master; _tenantManager = tenantManager; _cache = cache; @@ -34,7 +32,8 @@ namespace Oqtane.Repository } else { - return _tenantQueryContext.Setting.Where(item => item.EntityName == entityName); + using var db = _tenantContextFactory.CreateDbContext(); + return db.Setting.Where(item => item.EntityName == entityName).ToList(); } } diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index f1e82ef5..b683dadf 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Internal; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Oqtane.Enums; @@ -18,7 +19,6 @@ namespace Oqtane.Repository public class SiteRepository : ISiteRepository { private readonly IDbContextFactory _factory; - private readonly TenantDBContext _queryContext; private readonly IRoleRepository _roleRepository; private readonly IProfileRepository _profileRepository; private readonly IFolderRepository _folderRepository; @@ -38,7 +38,6 @@ namespace Oqtane.Repository IConfigurationRoot config, IServerStateManager serverState, ILogManager logger) { _factory = factory; - _queryContext = _factory.CreateDbContext(); _roleRepository = roleRepository; _profileRepository = profileRepository; _folderRepository = folderRepository; @@ -107,7 +106,8 @@ namespace Oqtane.Repository // synchronous methods public IEnumerable GetSites() { - return _queryContext.Site.OrderBy(item => item.Name); + using var db = _factory.CreateDbContext(); + return db.Site.OrderBy(item => item.Name).ToList(); } public Site AddSite(Site site) diff --git a/Oqtane.Server/Repository/UrlMappingRepository.cs b/Oqtane.Server/Repository/UrlMappingRepository.cs index a896e6de..71c80e7c 100644 --- a/Oqtane.Server/Repository/UrlMappingRepository.cs +++ b/Oqtane.Server/Repository/UrlMappingRepository.cs @@ -9,25 +9,24 @@ namespace Oqtane.Repository public class UrlMappingRepository : IUrlMappingRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; private readonly ISiteRepository _sites; public UrlMappingRepository(IDbContextFactory dbContextFactory, ISiteRepository sites) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); _sites = sites; } public IEnumerable GetUrlMappings(int siteId, bool isMapped) { + using var db = _dbContextFactory.CreateDbContext(); if (isMapped) { - return _queryContext.UrlMapping.Where(item => item.SiteId == siteId && !string.IsNullOrEmpty(item.MappedUrl)).Take(200); + return db.UrlMapping.Where(item => item.SiteId == siteId && !string.IsNullOrEmpty(item.MappedUrl)).Take(200).ToList(); } else { - return _queryContext.UrlMapping.Where(item => item.SiteId == siteId && string.IsNullOrEmpty(item.MappedUrl)).Take(200); + return db.UrlMapping.Where(item => item.SiteId == siteId && string.IsNullOrEmpty(item.MappedUrl)).Take(200).ToList(); } } diff --git a/Oqtane.Server/Repository/UserRepository.cs b/Oqtane.Server/Repository/UserRepository.cs index 512c1fb3..ffbf7412 100644 --- a/Oqtane.Server/Repository/UserRepository.cs +++ b/Oqtane.Server/Repository/UserRepository.cs @@ -9,7 +9,6 @@ namespace Oqtane.Repository public class UserRepository : IUserRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; private readonly IFolderRepository _folders; private readonly IRoleRepository _roles; private readonly IUserRoleRepository _userroles; @@ -17,7 +16,6 @@ namespace Oqtane.Repository public UserRepository(IDbContextFactory dbContextFactory, IFolderRepository folders, IRoleRepository roles, IUserRoleRepository userroles) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); _folders = folders; _roles = roles; _userroles = userroles; @@ -25,7 +23,8 @@ namespace Oqtane.Repository public IEnumerable GetUsers() { - return _queryContext.User; + using var db = _dbContextFactory.CreateDbContext(); + return db.User.ToList(); } public User AddUser(User user) diff --git a/Oqtane.Server/Repository/UserRoleRepository.cs b/Oqtane.Server/Repository/UserRoleRepository.cs index 3e835dc2..68c942ad 100644 --- a/Oqtane.Server/Repository/UserRoleRepository.cs +++ b/Oqtane.Server/Repository/UserRoleRepository.cs @@ -9,30 +9,30 @@ namespace Oqtane.Repository public class UserRoleRepository : IUserRoleRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; private readonly IRoleRepository _roles; public UserRoleRepository(IDbContextFactory dbContextFactory, IRoleRepository roles) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); _roles = roles; } public IEnumerable GetUserRoles(int siteId) { - return _queryContext.UserRole + using var db = _dbContextFactory.CreateDbContext(); + return db.UserRole .Include(item => item.Role) // eager load roles .Include(item => item.User) // eager load users - .Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null); + .Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null).ToList(); } public IEnumerable GetUserRoles(int userId, int siteId) { - return _queryContext.UserRole.Where(item => item.UserId == userId) + using var db = _dbContextFactory.CreateDbContext(); + return db.UserRole.Where(item => item.UserId == userId) .Include(item => item.Role) // eager load roles .Include(item => item.User) // eager load users - .Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null || siteId == -1); + .Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null || siteId == -1).ToList(); } public UserRole AddUserRole(UserRole userRole) diff --git a/Oqtane.Server/Repository/VisitorRepository.cs b/Oqtane.Server/Repository/VisitorRepository.cs index e0d082fd..f6b349ca 100644 --- a/Oqtane.Server/Repository/VisitorRepository.cs +++ b/Oqtane.Server/Repository/VisitorRepository.cs @@ -9,19 +9,18 @@ namespace Oqtane.Repository public class VisitorRepository : IVisitorRepository { private readonly IDbContextFactory _dbContextFactory; - private readonly TenantDBContext _queryContext; public VisitorRepository(IDbContextFactory dbContextFactory) { _dbContextFactory = dbContextFactory; - _queryContext = _dbContextFactory.CreateDbContext(); } public IEnumerable GetVisitors(int siteId, DateTime fromDate) { - return _queryContext.Visitor.AsNoTracking() + using var db = _dbContextFactory.CreateDbContext(); + return db.Visitor.AsNoTracking() .Include(item => item.User) // eager load users - .Where(item => item.SiteId == siteId && item.VisitedOn >= fromDate); + .Where(item => item.SiteId == siteId && item.VisitedOn >= fromDate).ToList(); } public Visitor AddVisitor(Visitor visitor)