diff --git a/RetainerTrack/Handlers/PersistenceContext.cs b/RetainerTrack/Handlers/PersistenceContext.cs index 848ea61..759e0b0 100644 --- a/RetainerTrack/Handlers/PersistenceContext.cs +++ b/RetainerTrack/Handlers/PersistenceContext.cs @@ -136,7 +136,7 @@ internal sealed class PersistenceContext { try { - var updates = mappings + var updates = mappings.DistinctBy(x => x.ContentId) .Where(mapping => mapping.ContentId != 0 && !string.IsNullOrEmpty(mapping.PlayerName)) .Where(mapping => { @@ -157,7 +157,13 @@ internal sealed class PersistenceContext using (var scope = _serviceProvider.CreateScope()) { using var dbContext = scope.ServiceProvider.GetRequiredService(); - dbContext.Players.AddRange(updates); + foreach (var update in updates) + { + if (!dbContext.Players.Any(x => x.LocalContentId == update.LocalContentId)) + dbContext.Players.AddRange(updates); + } + + dbContext.SaveChanges(); } foreach (var player in updates) diff --git a/RetainerTrack/RetainerTrack.csproj b/RetainerTrack/RetainerTrack.csproj index bff2685..6aa5fa9 100644 --- a/RetainerTrack/RetainerTrack.csproj +++ b/RetainerTrack/RetainerTrack.csproj @@ -2,7 +2,7 @@ net8.0-windows - 3.0 + 3.1 12.0 enable win-x64 diff --git a/RetainerTrack/RetainerTrackPlugin.cs b/RetainerTrack/RetainerTrackPlugin.cs index 0ea4687..0bc5ffe 100644 --- a/RetainerTrack/RetainerTrackPlugin.cs +++ b/RetainerTrack/RetainerTrackPlugin.cs @@ -37,7 +37,8 @@ internal sealed class RetainerTrackPlugin : IDalamudPlugin ServiceCollection serviceCollection = new(); serviceCollection.AddLogging(builder => builder.SetMinimumLevel(LogLevel.Trace) .ClearProviders() - .AddDalamudLogger(pluginLog)); + .AddDalamudLogger(pluginLog) + .AddFilter("Microsoft.EntityFrameworkCore", LogLevel.Warning)); serviceCollection.AddSingleton(this); serviceCollection.AddSingleton(pluginInterface); serviceCollection.AddSingleton(framework);