Replicated changes made from #13492

pull/13768/head
JPVenson 2 months ago
parent 05f5d19ff4
commit a6b4d124d7

@ -27,6 +27,12 @@ public interface IJellyfinDatabaseProvider
/// <param name="modelBuilder">The ModelBuilder from EFCore.</param>
void OnModelCreating(ModelBuilder modelBuilder);
/// <summary>
/// Will be invoked when EFCore wants to configure its model.
/// </summary>
/// <param name="configurationBuilder">The ModelConfigurationBuilder from EFCore.</param>
void ConfigureConventions(ModelConfigurationBuilder configurationBuilder);
/// <summary>
/// If supported this should run any periodic maintaince tasks.
/// </summary>

@ -272,4 +272,11 @@ public class JellyfinDbContext(DbContextOptions<JellyfinDbContext> options, ILog
// Configuration for each entity is in its own class inside 'ModelConfiguration'.
modelBuilder.ApplyConfigurationsFromAssembly(typeof(JellyfinDbContext).Assembly);
}
/// <inheritdoc />
protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
jellyfinDatabaseProvider.ConfigureConventions(configurationBuilder);
base.ConfigureConventions(configurationBuilder);
}
}

@ -0,0 +1,20 @@
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
namespace Jellyfin.Database.Providers.SqLite;
internal class DoNotUseReturningClauseConvention : IModelFinalizingConvention
{
/// <inheritdoc/>
public void ProcessModelFinalizing(
IConventionModelBuilder modelBuilder,
IConventionContext<IConventionModelBuilder> context)
{
foreach (var entityType in modelBuilder.Metadata.GetEntityTypes())
{
entityType.UseSqlReturningClause(false);
}
}
}

@ -78,4 +78,10 @@ public sealed class SqliteDatabaseProvider : IJellyfinDatabaseProvider
SqliteConnection.ClearAllPools();
}
/// <inheritdoc/>
public void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
configurationBuilder.Conventions.Add(_ => new DoNotUseReturningClauseConvention());
}
}

Loading…
Cancel
Save