diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.Collection.cs b/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.Collection.cs
index 44acaee3..f1487570 100644
--- a/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.Collection.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.Collection.cs
@@ -10,6 +10,20 @@ namespace Snap.Hutao.Extension;
///
internal static partial class EnumerableExtension
{
+ ///
+ /// 尝试添加物品
+ ///
+ /// 物品类型
+ /// 集合
+ /// 物品
+ public static void AddIfNotContains(this Collection collection, T item)
+ {
+ if (!collection.Contains(item))
+ {
+ collection.Add(item);
+ }
+ }
+
///
/// 移除集合中满足条件的项
///
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/GachaLogService.cs b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/GachaLogService.cs
index 3772b6c3..04f01d78 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/GachaLogService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/GachaLog/GachaLogService.cs
@@ -311,7 +311,7 @@ internal sealed class GachaLogService : IGachaLogService
{
if (archive == null)
{
- archive = appDbContext.GachaArchives.SingleOrDefault(a => a.Uid == uid);
+ archive = appDbContext.GachaArchives.AsNoTracking().SingleOrDefault(a => a.Uid == uid);
if (archive == null)
{
@@ -320,7 +320,7 @@ internal sealed class GachaLogService : IGachaLogService
// System.InvalidOperationException: Sequence contains no elements
// ? how this happen here?
- archive = appDbContext.GachaArchives.Single(a => a.Uid == uid);
+ archive = appDbContext.GachaArchives.AsNoTracking().Single(a => a.Uid == uid);
GachaArchive temp = archive;
ThreadHelper.InvokeOnMainThread(() => archiveCollection!.Add(temp));
}
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLog/GachaLogViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLog/GachaLogViewModel.cs
index 656011cb..0a6ca61d 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLog/GachaLogViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLog/GachaLogViewModel.cs
@@ -321,6 +321,7 @@ internal sealed class GachaLogViewModel : Abstraction.ViewModel
if (isOk)
{
await ThreadHelper.SwitchToMainThreadAsync();
+ Archives?.AddIfNotContains(archive!);
SetSelectedArchiveAndUpdateStatistics(archive, true);
}
}