aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-04-26 17:59:16 +0200
committerShadowghost <Ghost_of_Stone@web.de>2026-04-26 18:53:17 +0200
commitd19449e6a5d66bc37ade831dd96a85152e98a533 (patch)
tree86327b2ba4594220e6a49df94a76ff93cb1dfafb
parentfc866a64e063c9f04df3fab9a00846501c8d2b13 (diff)
Use AsNoTracking() when only reading
-rw-r--r--Jellyfin.Server.Implementations/Item/BaseItemRepository.ByName.cs2
-rw-r--r--Jellyfin.Server.Implementations/Item/BaseItemRepository.QueryBuilding.cs11
-rw-r--r--Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs2
-rw-r--r--Jellyfin.Server.Implementations/Item/LinkedChildrenService.cs4
4 files changed, 11 insertions, 8 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.ByName.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.ByName.cs
index c4464008d4..380c6e582c 100644
--- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.ByName.cs
+++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.ByName.cs
@@ -197,7 +197,7 @@ public sealed partial class BaseItemRepository
var masterIds = orderedMasterQuery.ToList();
var query = ApplyNavigations(
- context.BaseItems.AsSingleQuery().Where(e => masterIds.Contains(e.Id)),
+ context.BaseItems.AsNoTracking().AsSingleQuery().Where(e => masterIds.Contains(e.Id)),
filter);
query = ApplyOrder(query, filter, context);
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.QueryBuilding.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.QueryBuilding.cs
index 02664621d4..a1f02be059 100644
--- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.QueryBuilding.cs
+++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.QueryBuilding.cs
@@ -69,17 +69,17 @@ public sealed partial class BaseItemRepository
if (enableGroupByPresentationUniqueKey && filter.GroupBySeriesPresentationUniqueKey)
{
var groupedIds = dbQuery.GroupBy(e => new { e.PresentationUniqueKey, e.SeriesPresentationUniqueKey }).Select(e => e.Min(x => x.Id));
- dbQuery = context.BaseItems.Where(e => groupedIds.Contains(e.Id));
+ dbQuery = context.BaseItems.AsNoTracking().Where(e => groupedIds.Contains(e.Id));
}
else if (enableGroupByPresentationUniqueKey)
{
var groupedIds = dbQuery.GroupBy(e => e.PresentationUniqueKey).Select(e => e.Min(x => x.Id));
- dbQuery = context.BaseItems.Where(e => groupedIds.Contains(e.Id));
+ dbQuery = context.BaseItems.AsNoTracking().Where(e => groupedIds.Contains(e.Id));
}
else if (filter.GroupBySeriesPresentationUniqueKey)
{
var groupedIds = dbQuery.GroupBy(e => e.SeriesPresentationUniqueKey).Select(e => e.Min(x => x.Id));
- dbQuery = context.BaseItems.Where(e => groupedIds.Contains(e.Id));
+ dbQuery = context.BaseItems.AsNoTracking().Where(e => groupedIds.Contains(e.Id));
}
else
{
@@ -142,7 +142,7 @@ public sealed partial class BaseItemRepository
.Distinct();
var collapsedIds = nonCollapsibleIds.Union(collapsibleNotInBoxSet).Union(boxSetIds);
- return context.BaseItems.Where(e => collapsedIds.Contains(e.Id));
+ return context.BaseItems.AsNoTracking().Where(e => collapsedIds.Contains(e.Id));
}
private static IQueryable<BaseItemEntity> ApplyBoxSetCollapsingAll(
@@ -169,7 +169,7 @@ public sealed partial class BaseItemRepository
.Distinct();
var collapsedIds = notInBoxSet.Union(boxSetIds);
- return context.BaseItems.Where(e => collapsedIds.Contains(e.Id));
+ return context.BaseItems.AsNoTracking().Where(e => collapsedIds.Contains(e.Id));
}
private static IQueryable<BaseItemEntity> ApplyNameFilters(IQueryable<BaseItemEntity> dbQuery, InternalItemsQuery filter)
@@ -368,6 +368,7 @@ public sealed partial class BaseItemRepository
var allDescendantIds = DescendantQueryHelper.GetAllDescendantIds(context, ancestorId);
var baseQuery = context.BaseItems
+ .AsNoTracking()
.Where(b => allDescendantIds.Contains(b.Id) && !b.IsFolder && !b.IsVirtualItem);
return ApplyAccessFiltering(context, baseQuery, filter);
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs
index 7ca3559324..69c8a3b811 100644
--- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs
+++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.Querying.cs
@@ -87,7 +87,7 @@ public sealed partial class BaseItemRepository
return Array.Empty<BaseItemDto>();
}
- var itemsById = ApplyNavigations(context.BaseItems.Where(e => orderedIds.Contains(e.Id)), filter)
+ var itemsById = ApplyNavigations(context.BaseItems.AsNoTracking().Where(e => orderedIds.Contains(e.Id)), filter)
.AsSplitQuery()
.AsEnumerable()
.Select(w => DeserializeBaseItem(w, filter.SkipDeserialization))
diff --git a/Jellyfin.Server.Implementations/Item/LinkedChildrenService.cs b/Jellyfin.Server.Implementations/Item/LinkedChildrenService.cs
index 19afe04f01..4d27cae218 100644
--- a/Jellyfin.Server.Implementations/Item/LinkedChildrenService.cs
+++ b/Jellyfin.Server.Implementations/Item/LinkedChildrenService.cs
@@ -62,7 +62,9 @@ public class LinkedChildrenService : ILinkedChildrenService
{
using var dbContext = _dbProvider.CreateDbContext();
- var artists = dbContext.BaseItems.Where(e => e.Type == _itemTypeLookup.BaseItemKindNames[BaseItemKind.MusicArtist]!)
+ var artists = dbContext.BaseItems
+ .AsNoTracking()
+ .Where(e => e.Type == _itemTypeLookup.BaseItemKindNames[BaseItemKind.MusicArtist]!)
.Where(e => artistNames.Contains(e.Name))
.ToArray();