Как использовать методы WebMatrix с Npgsql в .NET MVC Core 5

Я хочу использовать пространство имен WebMatrix.Data

#region Assembly WebMatrix.Data, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// .. \packages\Microsoft.AspNet.WebPages.Data.3.2.7\lib\net45\WebMatrix.Data.dll

с поставщиком данных Npgsql в ASP MVC Core 5.

В web.config он определяется как

<system.data>
  <DbProviderFactories>
    <clear />
    <add name="Npgsql Data Provider" invariant="Npgsql"
  support="FF" description=".Net Framework Data Provider for Postgresql Server"
  type="Npgsql.NpgsqlFactory, Npgsql" />
  </DbProviderFactories>
</system.data>

.NET 5 не читает конфигурацию из web.config. Я пробовал согласно

Добавить DbProviderFactory без App.Config

в коде

System.Data.Common.DbProviderFactories.RegisterFactory("NpgSql", Npgsql.NpgsqlFactory.Instance);

но произошла ошибка компиляции. Метод RegisterFactory не существует. Программа просмотра сборок VS2019 подтверждает это:

#region Assembly System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.Data.dll
#endregion

namespace System.Data.Common
{
    public static class DbProviderFactories
    {
        public static DbProviderFactory GetFactory(string providerInvariantName);
        public static DbProviderFactory GetFactory(DataRow providerRow);
        public static DbProviderFactory GetFactory(DbConnection connection);
        public static DataTable GetFactoryClasses();
    }
}

Согласно документу он должен существовать:

//docs.microsoft.com/en-us/dotnet/api/system.data.common.dbproviderfactories.registerfactory?view=net-5.0#System_Data_Common_DbProviderFactories_RegisterFactory_System_String_System_Data_Common_DbProviderFactory _

Как использовать базу данных Postgres в WebMatrix в .NET MVC Core 5?


person Andrus    schedule 27.12.2020    source источник


Ответы (1)


Похоже, вы ориентируетесь на .NET Framework 4.8, а не на .NET 5 :

// C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.8 \ System.Data.dll

Кроме того, WebMatrix - это старая технология, поддержка которой прекращена и формальная закончилась 1 ноября 2017 г.. Так что маловероятно, что вы заставите его работать на .NET 5.

person 0xced    schedule 27.12.2020
comment
Мое приложение нацелено на .NET 5. У меня также есть другой MVC, ориентированный на .NET 4.8. В этом случае это работает. При вызове из .NET 5 Npgsql должен быть зарегистрирован из кода, чтобы он работал в .NET 5. - person Andrus; 27.12.2020