From 228f3d4fa4bc39a43f96a5f74d509e939f0a9fe0 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sat, 5 Apr 2025 02:04:27 -0700 Subject: [PATCH 1/2] Switched to DataSourceConfigurationPlugin --- .../Pgvector.EntityFrameworkCore.csproj | 2 +- .../VectorDataSourceConfigurationPlugin.cs | 10 ++++++++++ .../VectorDbContextOptionsBuilderExtensions.cs | 5 ----- .../VectorDbContextOptionsExtension.cs | 4 +++- 4 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 src/Pgvector.EntityFrameworkCore/VectorDataSourceConfigurationPlugin.cs diff --git a/src/Pgvector.EntityFrameworkCore/Pgvector.EntityFrameworkCore.csproj b/src/Pgvector.EntityFrameworkCore/Pgvector.EntityFrameworkCore.csproj index eaf6b13..a68a9d8 100644 --- a/src/Pgvector.EntityFrameworkCore/Pgvector.EntityFrameworkCore.csproj +++ b/src/Pgvector.EntityFrameworkCore/Pgvector.EntityFrameworkCore.csproj @@ -22,7 +22,7 @@ - + diff --git a/src/Pgvector.EntityFrameworkCore/VectorDataSourceConfigurationPlugin.cs b/src/Pgvector.EntityFrameworkCore/VectorDataSourceConfigurationPlugin.cs new file mode 100644 index 0000000..8ee4276 --- /dev/null +++ b/src/Pgvector.EntityFrameworkCore/VectorDataSourceConfigurationPlugin.cs @@ -0,0 +1,10 @@ +using Npgsql; +using Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure; + +namespace Pgvector.EntityFrameworkCore; + +public class VectorDataSourceConfigurationPlugin : INpgsqlDataSourceConfigurationPlugin +{ + public void Configure(NpgsqlDataSourceBuilder npgsqlDataSourceBuilder) + => npgsqlDataSourceBuilder.UseVector(); +} diff --git a/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsBuilderExtensions.cs b/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsBuilderExtensions.cs index 1b04c88..d491d4c 100644 --- a/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsBuilderExtensions.cs +++ b/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsBuilderExtensions.cs @@ -10,11 +10,6 @@ public static class VectorDbContextOptionsBuilderExtensions { public static NpgsqlDbContextOptionsBuilder UseVector(this NpgsqlDbContextOptionsBuilder optionsBuilder) { - // not ideal, but how Npgsql.EntityFrameworkCore.PostgreSQL does it -#pragma warning disable CS0618 - NpgsqlConnection.GlobalTypeMapper.UseVector(); -#pragma warning restore CS0618 - var coreOptionsBuilder = ((IRelationalDbContextOptionsBuilderInfrastructure)optionsBuilder).OptionsBuilder; var extension = coreOptionsBuilder.Options.FindExtension() diff --git a/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsExtension.cs b/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsExtension.cs index 570e4dc..5da3dca 100644 --- a/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsExtension.cs +++ b/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsExtension.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore.Query; using Microsoft.EntityFrameworkCore.Storage; using Microsoft.Extensions.DependencyInjection; +using Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure; namespace Pgvector.EntityFrameworkCore; @@ -13,7 +14,8 @@ public class VectorDbContextOptionsExtension : IDbContextOptionsExtension public void ApplyServices(IServiceCollection services) { - new EntityFrameworkRelationalServicesBuilder(services) + new EntityFrameworkNpgsqlServicesBuilder(services) + .TryAdd() .TryAdd(); services.AddSingleton(); From 1cc72001ec59542547b0880d0f7203edc02f3126 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sat, 5 Apr 2025 02:16:50 -0700 Subject: [PATCH 2/2] Removed unneeded using [skip ci] --- .../VectorDbContextOptionsBuilderExtensions.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsBuilderExtensions.cs b/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsBuilderExtensions.cs index d491d4c..52925e5 100644 --- a/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsBuilderExtensions.cs +++ b/src/Pgvector.EntityFrameworkCore/VectorDbContextOptionsBuilderExtensions.cs @@ -1,5 +1,4 @@ using Microsoft.EntityFrameworkCore.Infrastructure; -using Npgsql; using Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure; using Pgvector.EntityFrameworkCore; using Pgvector.Npgsql;