diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs index 702e72f0ce..d42581ef4b 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs @@ -233,7 +233,7 @@ public sealed class BaseItemRepository(IDbContextFactory dbPr var result = new QueryResult(); using var context = dbProvider.CreateDbContext(); - IQueryable dbQuery = context.BaseItems + IQueryable dbQuery = context.BaseItems.AsNoTracking() .Include(e => e.ExtraType) .Include(e => e.TrailerTypes) .Include(e => e.Images) @@ -272,7 +272,7 @@ public sealed class BaseItemRepository(IDbContextFactory dbPr PrepareFilterQuery(filter); using var context = dbProvider.CreateDbContext(); - var dbQuery = TranslateQuery(context.BaseItems, context, filter); + var dbQuery = TranslateQuery(context.BaseItems.AsNoTracking(), context, filter); if (filter.Limit.HasValue || filter.StartIndex.HasValue) { var offset = filter.StartIndex ?? 0; @@ -299,7 +299,7 @@ public sealed class BaseItemRepository(IDbContextFactory dbPr PrepareFilterQuery(filter); using var context = dbProvider.CreateDbContext(); - var dbQuery = TranslateQuery(context.BaseItems, context, filter); + var dbQuery = TranslateQuery(context.BaseItems.AsNoTracking(), context, filter); return dbQuery.Count(); } @@ -1310,7 +1310,7 @@ public sealed class BaseItemRepository(IDbContextFactory dbPr } using var context = dbProvider.CreateDbContext(); - var item = context.BaseItems.FirstOrDefault(e => e.Id == id); + var item = context.BaseItems.AsNoTracking().FirstOrDefault(e => e.Id == id); if (item is null) { return null; @@ -1644,6 +1644,7 @@ public sealed class BaseItemRepository(IDbContextFactory dbPr using var context = dbProvider.CreateDbContext(); var query = context.ItemValues + .AsNoTracking() .Where(e => itemValueTypes.Any(w => (ItemValueType)w == e.Type)); if (withItemTypes.Count > 0) { @@ -1693,7 +1694,7 @@ public sealed class BaseItemRepository(IDbContextFactory dbPr IsNews = filter.IsNews, IsSeries = filter.IsSeries }; - var query = TranslateQuery(context.BaseItems, context, innerQuery); + var query = TranslateQuery(context.BaseItems.AsNoTracking(), context, innerQuery); query = query.Where(e => e.Type == returnType && e.ItemValues!.Any(f => e.CleanName == f.CleanValue && itemValueTypes.Any(w => (ItemValueType)w == f.Type))); diff --git a/Jellyfin.Server.Implementations/Item/ChapterRepository.cs b/Jellyfin.Server.Implementations/Item/ChapterRepository.cs index d215a1d7ad..dc55484c9d 100644 --- a/Jellyfin.Server.Implementations/Item/ChapterRepository.cs +++ b/Jellyfin.Server.Implementations/Item/ChapterRepository.cs @@ -46,7 +46,7 @@ public class ChapterRepository : IChapterRepository public ChapterInfo? GetChapter(Guid baseItemId, int index) { using var context = _dbProvider.CreateDbContext(); - var chapter = context.Chapters + var chapter = context.Chapters.AsNoTracking() .Select(e => new { chapter = e, @@ -65,7 +65,7 @@ public class ChapterRepository : IChapterRepository public IReadOnlyList GetChapters(Guid baseItemId) { using var context = _dbProvider.CreateDbContext(); - return context.Chapters.Where(e => e.ItemId.Equals(baseItemId)) + return context.Chapters.AsNoTracking().Where(e => e.ItemId.Equals(baseItemId)) .Select(e => new { chapter = e, diff --git a/Jellyfin.Server.Implementations/Item/MediaAttachmentRepository.cs b/Jellyfin.Server.Implementations/Item/MediaAttachmentRepository.cs index d2034f6c5e..c6488f3210 100644 --- a/Jellyfin.Server.Implementations/Item/MediaAttachmentRepository.cs +++ b/Jellyfin.Server.Implementations/Item/MediaAttachmentRepository.cs @@ -34,7 +34,7 @@ public class MediaAttachmentRepository(IDbContextFactory dbPr public IReadOnlyList GetMediaAttachments(MediaAttachmentQuery filter) { using var context = dbProvider.CreateDbContext(); - var query = context.AttachmentStreamInfos.Where(e => e.ItemId.Equals(filter.ItemId)); + var query = context.AttachmentStreamInfos.AsNoTracking().Where(e => e.ItemId.Equals(filter.ItemId)); if (filter.Index.HasValue) { query = query.Where(e => e.Index == filter.Index); diff --git a/Jellyfin.Server.Implementations/Item/MediaStreamRepository.cs b/Jellyfin.Server.Implementations/Item/MediaStreamRepository.cs index 203071a6e0..797a932ef1 100644 --- a/Jellyfin.Server.Implementations/Item/MediaStreamRepository.cs +++ b/Jellyfin.Server.Implementations/Item/MediaStreamRepository.cs @@ -37,7 +37,7 @@ public class MediaStreamRepository(IDbContextFactory dbProvid public IReadOnlyList GetMediaStreams(MediaStreamQuery filter) { using var context = dbProvider.CreateDbContext(); - return TranslateQuery(context.MediaStreamInfos, filter).AsEnumerable().Select(Map).ToImmutableArray(); + return TranslateQuery(context.MediaStreamInfos.AsNoTracking(), filter).AsEnumerable().Select(Map).ToImmutableArray(); } private string? GetPathToSave(string? path)