mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-03 23:36:38 +01:00
Use AsNoTracking() when only reading
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user