|  | @@ -638,25 +638,30 @@ namespace Emby.Server.Implementations.Data
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              CheckDisposed();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            var tuples = new List<Tuple<BaseItem, List<Guid>>>();
 | 
	
		
			
				|  |  | +            foreach (var item in items)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                var ancestorIds = item.SupportsAncestors ?
 | 
	
		
			
				|  |  | +                    item.GetAncestorIds().Distinct().ToList() :
 | 
	
		
			
				|  |  | +                    null;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                tuples.Add(new Tuple<BaseItem, List<Guid>>(item, ancestorIds));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              using (var connection = CreateConnection())
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  using (WriteLock.Write())
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      connection.RunInTransaction(db =>
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  | -                        SaveItemsInTranscation(db, items);
 | 
	
		
			
				|  |  | +                        SaveItemsInTranscation(db, tuples);
 | 
	
		
			
				|  |  |                      });
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        private void SaveItemsInTranscation(IDatabaseConnection db, List<BaseItem> items)
 | 
	
		
			
				|  |  | +        private void SaveItemsInTranscation(IDatabaseConnection db, List<Tuple<BaseItem, List<Guid>>> tuples)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            if (items == null)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                throw new ArgumentNullException("items");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              var requiresReset = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              using (var saveItemStatement = db.PrepareStatement(GetSaveItemCommandText()))
 | 
	
	
		
			
				|  | @@ -665,19 +670,21 @@ namespace Emby.Server.Implementations.Data
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      using (var updateAncestorsStatement = db.PrepareStatement("insert into AncestorIds (ItemId, AncestorId, AncestorIdText) values (@ItemId, @AncestorId, @AncestorIdText)"))
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  | -                        foreach (var item in items)
 | 
	
		
			
				|  |  | +                        foreach (var tuple in tuples)
 | 
	
		
			
				|  |  |                          {
 | 
	
		
			
				|  |  |                              if (requiresReset)
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  |                                  saveItemStatement.Reset();
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                            var item = tuple.Item1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                              SaveItem(item, saveItemStatement);
 | 
	
		
			
				|  |  |                              //Logger.Debug(_saveItemCommand.CommandText);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (item.SupportsAncestors)
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  | -                                UpdateAncestors(item.Id, item.GetAncestorIds().Distinct().ToList(), db, deleteAncestorsStatement, updateAncestorsStatement);
 | 
	
		
			
				|  |  | +                                UpdateAncestors(item.Id, tuple.Item2, db, deleteAncestorsStatement, updateAncestorsStatement);
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              UpdateItemValues(item.Id, GetItemValuesToSave(item), db);
 | 
	
	
		
			
				|  | @@ -802,7 +809,7 @@ namespace Emby.Server.Implementations.Data
 | 
	
		
			
				|  |  |              saveItemStatement.TryBind("@IsHD", item.IsHD);
 | 
	
		
			
				|  |  |              saveItemStatement.TryBind("@ExternalEtag", item.ExternalEtag);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (item.DateLastRefreshed == default(DateTime))
 | 
	
		
			
				|  |  | +            if (item.DateLastRefreshed != default(DateTime))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  saveItemStatement.TryBind("@DateLastRefreshed", item.DateLastRefreshed);
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -811,9 +818,9 @@ namespace Emby.Server.Implementations.Data
 | 
	
		
			
				|  |  |                  saveItemStatement.TryBindNull("@DateLastRefreshed");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (item.DateLastSaved == default(DateTime))
 | 
	
		
			
				|  |  | +            if (item.DateLastSaved != default(DateTime))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                saveItemStatement.TryBind("@DateLastSaved", item.DateLastRefreshed);
 | 
	
		
			
				|  |  | +                saveItemStatement.TryBind("@DateLastSaved", item.DateLastSaved);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else
 | 
	
		
			
				|  |  |              {
 | 
	
	
		
			
				|  | @@ -948,7 +955,7 @@ namespace Emby.Server.Implementations.Data
 | 
	
		
			
				|  |  |              var hasSeries = item as IHasSeries;
 | 
	
		
			
				|  |  |              if (hasSeries != null)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                saveItemStatement.TryBind("@SeriesName", hasSeries.FindSeriesName());
 | 
	
		
			
				|  |  | +                saveItemStatement.TryBind("@SeriesName", hasSeries.SeriesName);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else
 | 
	
		
			
				|  |  |              {
 | 
	
	
		
			
				|  | @@ -960,8 +967,8 @@ namespace Emby.Server.Implementations.Data
 | 
	
		
			
				|  |  |              var episode = item as Episode;
 | 
	
		
			
				|  |  |              if (episode != null)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                saveItemStatement.TryBind("@SeasonName", episode.FindSeasonName());
 | 
	
		
			
				|  |  | -                saveItemStatement.TryBind("@SeasonId", episode.FindSeasonId());
 | 
	
		
			
				|  |  | +                saveItemStatement.TryBind("@SeasonName", episode.SeasonName);
 | 
	
		
			
				|  |  | +                saveItemStatement.TryBind("@SeasonId", episode.SeasonId);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else
 | 
	
		
			
				|  |  |              {
 | 
	
	
		
			
				|  | @@ -971,8 +978,8 @@ namespace Emby.Server.Implementations.Data
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (hasSeries != null)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                saveItemStatement.TryBind("@SeriesId", hasSeries.FindSeriesId());
 | 
	
		
			
				|  |  | -                saveItemStatement.TryBind("@SeriesSortName", hasSeries.FindSeriesSortName());
 | 
	
		
			
				|  |  | +                saveItemStatement.TryBind("@SeriesId", hasSeries.SeriesId);
 | 
	
		
			
				|  |  | +                saveItemStatement.TryBind("@SeriesSortName", hasSeries.SeriesSortName);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else
 | 
	
		
			
				|  |  |              {
 |