2
0
Luke Pulverenti 9 жил өмнө
parent
commit
f952ac0f1f

+ 1 - 0
MediaBrowser.Controller/Entities/Book.cs

@@ -20,6 +20,7 @@ namespace MediaBrowser.Controller.Entities
 
         [IgnoreDataMember]
         public string SeriesName { get; set; }
+        [IgnoreDataMember]
         public Guid? SeriesId { get; set; }
 
         public string FindSeriesName()

+ 1 - 0
MediaBrowser.Controller/Entities/TV/Episode.cs

@@ -249,6 +249,7 @@ namespace MediaBrowser.Controller.Entities.TV
 
         [IgnoreDataMember]
         public Guid? SeasonId { get; set; }
+        [IgnoreDataMember]
         public Guid? SeriesId { get; set; }
 
         public Guid? FindSeriesId()

+ 1 - 0
MediaBrowser.Controller/Entities/TV/Season.cs

@@ -237,6 +237,7 @@ namespace MediaBrowser.Controller.Entities.TV
         [IgnoreDataMember]
         public string SeriesName { get; set; }
 
+        [IgnoreDataMember]
         public Guid? SeriesId { get; set; }
 
         public string FindSeriesName()

+ 11 - 15
MediaBrowser.Server.Implementations/Dto/DtoService.cs

@@ -671,17 +671,6 @@ namespace MediaBrowser.Server.Implementations.Dto
                 .ToList();
         }
 
-        private IEnumerable<string> GetCacheTags(BaseItem item, ImageType type, int limit)
-        {
-            return item.GetImages(type)
-                // Convert to a list now in case GetImageCacheTag is slow
-                .ToList()
-                .Select(p => GetImageCacheTag(item, p))
-                .Where(i => i != null)
-                .Take(limit)
-                .ToList();
-        }
-
         private string GetImageCacheTag(BaseItem item, ImageType type)
         {
             try
@@ -1458,9 +1447,16 @@ namespace MediaBrowser.Server.Implementations.Dto
             while (((!dto.HasLogo && logoLimit > 0) || (!dto.HasArtImage && artLimit > 0) || (!dto.HasThumb && thumbLimit > 0) || parent is Series) && 
                 (parent = parent ?? (isFirst ? item.GetParent() ?? owner : parent)) != null)
             {
+                if (parent == null)
+                {
+                    break;
+                }
+
+                var allImages = parent.ImageInfos;
+
                 if (logoLimit > 0 && !dto.HasLogo && dto.ParentLogoItemId == null)
                 {
-                    var image = parent.GetImageInfo(ImageType.Logo, 0);
+                    var image = allImages.FirstOrDefault(i => i.Type == ImageType.Logo);
 
                     if (image != null)
                     {
@@ -1470,7 +1466,7 @@ namespace MediaBrowser.Server.Implementations.Dto
                 }
                 if (artLimit > 0 && !dto.HasArtImage && dto.ParentArtItemId == null)
                 {
-                    var image = parent.GetImageInfo(ImageType.Art, 0);
+                    var image = allImages.FirstOrDefault(i => i.Type == ImageType.Art);
 
                     if (image != null)
                     {
@@ -1480,7 +1476,7 @@ namespace MediaBrowser.Server.Implementations.Dto
                 }
                 if (thumbLimit > 0 && !dto.HasThumb && (dto.ParentThumbItemId == null || parent is Series))
                 {
-                    var image = parent.GetImageInfo(ImageType.Thumb, 0);
+                    var image = allImages.FirstOrDefault(i => i.Type == ImageType.Thumb);
 
                     if (image != null)
                     {
@@ -1490,7 +1486,7 @@ namespace MediaBrowser.Server.Implementations.Dto
                 }
                 if (backdropLimit > 0 && !dto.HasBackdrop)
                 {
-                    var images = parent.GetImages(ImageType.Backdrop).Take(backdropLimit).ToList();
+                    var images = allImages.Where(i => i.Type == ImageType.Backdrop).Take(backdropLimit).ToList();
 
                     if (images.Count > 0)
                     {

+ 37 - 12
MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs

@@ -155,6 +155,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
 
             _logger.Debug("Upgrading schema for {0} items", numItems);
 
+            var list = new List<BaseItem>();
+
             foreach (var itemId in itemIds)
             {
                 cancellationToken.ThrowIfCancellationRequested();
@@ -166,19 +168,26 @@ namespace MediaBrowser.Server.Implementations.Persistence
 
                     if (item != null)
                     {
-                        try
-                        {
-                            await _itemRepo.SaveItem(item, cancellationToken).ConfigureAwait(false);
-                        }
-                        catch (OperationCanceledException)
-                        {
-                            throw;
-                        }
-                        catch (Exception ex)
-                        {
-                            _logger.ErrorException("Error saving item", ex);
-                        }
+                        list.Add(item);
+                    }
+                }
+
+                if (list.Count >= 1000)
+                {
+                    try
+                    {
+                        await _itemRepo.SaveItems(list, cancellationToken).ConfigureAwait(false);
                     }
+                    catch (OperationCanceledException)
+                    {
+                        throw;
+                    }
+                    catch (Exception ex)
+                    {
+                        _logger.ErrorException("Error saving item", ex);
+                    }
+
+                    list.Clear();
                 }
 
                 numComplete++;
@@ -187,6 +196,22 @@ namespace MediaBrowser.Server.Implementations.Persistence
                 progress.Report(percent * 100);
             }
 
+            if (list.Count > 0)
+            {
+                try
+                {
+                    await _itemRepo.SaveItems(list, cancellationToken).ConfigureAwait(false);
+                }
+                catch (OperationCanceledException)
+                {
+                    throw;
+                }
+                catch (Exception ex)
+                {
+                    _logger.ErrorException("Error saving item", ex);
+                }
+            }
+
             progress.Report(100);
         }