如何在 .NET MVC Core 5 中使用 WebMatrix 方法和 Npgsql

How to use WebMatrix methods with Npgsql in .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

在 ASP MVC Core 5 中使用 Npgsql 数据提供程序。

在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 读取配置。 我按照

试过了

Add a DbProviderFactory without an 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();
    }
}

根据文档,它必须存在:

https://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_

如何在 .NET MVC Core 5 的 WebMatrix 中使用 Postgres 数据库?

您的目标似乎是 .NET Framework 4.8,而不是 .NET 5:

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

此外,WebMatrix 是一项已经停产的旧技术,其正式support has ended on November 1st, 2017。所以你不太可能让它在 .NET 5 上运行。