如何解决.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 举报,一经查实,本站将立刻删除。