mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-02 13:15:25 -04:00
attempted to fix multi insert for Itemvalues
This commit is contained in:
parent
b60cd378d9
commit
30ba35aa0c
@ -373,6 +373,8 @@ public sealed class BaseItemRepository(
|
|||||||
tuples[i] = (item, ancestorIds, topParent, userdataKey, inheritedTags);
|
tuples[i] = (item, ancestorIds, topParent, userdataKey, inheritedTags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var localFuckingItemValueCache = new Dictionary<(int MagicNumber, string Value), Guid>();
|
||||||
|
|
||||||
using var context = dbProvider.CreateDbContext();
|
using var context = dbProvider.CreateDbContext();
|
||||||
using var transaction = context.Database.BeginTransaction();
|
using var transaction = context.Database.BeginTransaction();
|
||||||
foreach (var item in tuples)
|
foreach (var item in tuples)
|
||||||
@ -416,10 +418,14 @@ public sealed class BaseItemRepository(
|
|||||||
context.ItemValuesMap.Where(e => e.ItemId == entity.Id).ExecuteDelete();
|
context.ItemValuesMap.Where(e => e.ItemId == entity.Id).ExecuteDelete();
|
||||||
foreach (var itemValue in itemValuesToSave)
|
foreach (var itemValue in itemValuesToSave)
|
||||||
{
|
{
|
||||||
var refValue = context.ItemValues
|
if (!localFuckingItemValueCache.TryGetValue(itemValue, out var refValue))
|
||||||
|
{
|
||||||
|
refValue = context.ItemValues
|
||||||
.Where(f => f.CleanValue == GetCleanValue(itemValue.Value) && (int)f.Type == itemValue.MagicNumber)
|
.Where(f => f.CleanValue == GetCleanValue(itemValue.Value) && (int)f.Type == itemValue.MagicNumber)
|
||||||
.Select(e => e.ItemValueId)
|
.Select(e => e.ItemValueId)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
if (refValue.IsEmpty())
|
if (refValue.IsEmpty())
|
||||||
{
|
{
|
||||||
context.ItemValues.Add(new ItemValue()
|
context.ItemValues.Add(new ItemValue()
|
||||||
@ -429,6 +435,7 @@ public sealed class BaseItemRepository(
|
|||||||
ItemValueId = refValue = Guid.NewGuid(),
|
ItemValueId = refValue = Guid.NewGuid(),
|
||||||
Value = itemValue.Value
|
Value = itemValue.Value
|
||||||
});
|
});
|
||||||
|
localFuckingItemValueCache[itemValue] = refValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
context.ItemValuesMap.Add(new ItemValueMap()
|
context.ItemValuesMap.Add(new ItemValueMap()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user