diff options
| author | JPVenson <github@jpb.email> | 2024-11-14 21:48:21 +0000 |
|---|---|---|
| committer | JPVenson <github@jpb.email> | 2024-11-14 21:48:21 +0000 |
| commit | 37129f79526ab713c9e6337f1f40e1673ef3d84d (patch) | |
| tree | f19aeae29ade4b9a692f9490bc1fad969a962e00 /Emby.Server.Implementations/Library | |
| parent | d4aca8458146b4bfea78609748739e96eccee0c9 (diff) | |
Fixed Transaction for Userdata
Diffstat (limited to 'Emby.Server.Implementations/Library')
| -rw-r--r-- | Emby.Server.Implementations/Library/UserDataManager.cs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/Emby.Server.Implementations/Library/UserDataManager.cs b/Emby.Server.Implementations/Library/UserDataManager.cs index 3214c859a..6a0ee445a 100644 --- a/Emby.Server.Implementations/Library/UserDataManager.cs +++ b/Emby.Server.Implementations/Library/UserDataManager.cs @@ -59,26 +59,27 @@ namespace Emby.Server.Implementations.Library var keys = item.GetUserDataKeys(); - var userId = user.InternalId; - - using var repository = _repository.CreateDbContext(); + using var dbContext = _repository.CreateDbContext(); + using var transaction = dbContext.Database.BeginTransaction(); foreach (var key in keys) { userData.Key = key; var userDataEntry = Map(userData, user.Id, item.Id); - if (repository.UserData.Any(f => f.ItemId == item.Id && f.UserId == user.Id && f.CustomDataKey == key)) + if (dbContext.UserData.Any(f => f.ItemId == userDataEntry.ItemId && f.UserId == userDataEntry.UserId && f.CustomDataKey == userDataEntry.CustomDataKey)) { - repository.UserData.Attach(userDataEntry).State = EntityState.Modified; + dbContext.UserData.Attach(userDataEntry).State = EntityState.Modified; } else { - repository.UserData.Add(userDataEntry); + dbContext.UserData.Add(userDataEntry); } } - repository.SaveChanges(); + dbContext.SaveChanges(); + transaction.Commit(); + var userId = user.InternalId; var cacheKey = GetCacheKey(userId, item.Id); _userData.AddOrUpdate(cacheKey, userData, (_, _) => userData); |
