微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.Net core 5.0 控制台应用程序引用了 .Net framework4.7.2

如何解决.Net core 5.0 控制台应用程序引用了 .Net framework4.7.2

我在 .Net 框架 4.7.2 中构建了一个实体框架数据访问层

我正在尝试从 .Net 核心控制台应用程序中引用它。

我不断收到错误消息 具有不变名称“Npgsql”的 ADO.NET 提供程序未在计算机或应用程序配置文件注册,或者无法加载。有关详细信息,请参阅内部异常。

我根据网络上的建议添加了以下代码,但随后错误更改为使用 system.configuration 的不同方法,并且错误变为“无法初始化配置” system.data is invalid config section

     <entityFramework>
    <providers>
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices,EntityFramework6.Npgsql" />
      <!--<provider invariantName="System.Data.sqlClient" type="System.Data.Entity.sqlServer.sqlProviderServices,EntityFramework.sqlServer" />-->
      <provider invariantName="System.Data.sqlClient" type="System.Data.Entity.sqlServer.sqlProviderServices,EntityFramework.sqlServer" />
    </providers>
    <defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory,EntityFramework6.Npgsql" />
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <!--<add name="dotConnect for Postgresql" invariant="Devart.Data.Postgresql" description="Devart dotConnect for Postgresql" type="Devart.Data.Postgresql.PgsqlProviderFactory,Devart.Data.Postgresql,Version= 7.17.1583.0,Culture=neutral,PublicKeyToken=09af7300eec23701" />-->

      <!--<add name="Npgsql Provider" invariant="Npgsql" description=".NET Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory,Npgsql,Version=4.1.3.0,PublicKeyToken=5d8b90d52f46fda7" />-->
      <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for Postgresql" type="Npgsql.NpgsqlFactory,PublicKeyToken=5d8b90d52f46fda7" />

    <remove invariant="Npgsql" /><add name="Npgsql Provider" invariant="Npgsql" description=".NET Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory,PublicKeyToken=5d8b90d52f46fda7" /></DbProviderFactories>
  </system.data>    

解决方法

对于 .NET Core,您需要调用 DbProviderFactories.RegisterFactory 而不是使用配置文件。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。