首页 > 解决方案 > .NET Framework 中的 DbProviderFactories.RegisterFactory?

问题描述

我已将我在 .NET Core 2.1 中编写的应用程序移植到 .NET 4.7.2。

基本上几乎一切都还好,有几件事被破坏了(正如预期的那样),但有一件事似乎在 netcore 和 .net 中并不可知。

这条线是:

DbProviderFactories.RegisterFactory("test", SqlClientFactory.Instance);
var db = new Database("Server=TCPblablabla login", "test");

SqlSet <CharObj> products = db.From<CharObj>("[MyDb].[dbo].[Whatever]").Where("Name = {0}", myvar);

它在 .netcore 上运行良好,但在 .Net 4.7.2 上却无法运行。因为 DbProviderFactories.RegisterFactory 在 4.7.2 中不存在。

我似乎有很多人在抱怨它,但我还没有找到任何覆盖等。你们对如何解决这个问题有任何想法吗?

.Net 4.7.2 - 不存在

.Netcore - 像魅力一样工作!

PS:这不应该发生,我在 GitHub 上打开了一个问题,几周后他们修复了它并关闭了我的票,甚至在他们的 C# 新闻发布会上展示了它(我不记得是哪个)。

标签: c#.netsql-server

解决方案


该类DbProviderFactories是很久以前设计的,注册工厂必须通过 .NET Framework 上的应用程序配置文件来完成。该RegisterFactory方法后来才在 .NET Core 上添加,从未向后移植到 .NET Framework。

但是有一种方法可以DbProviderFactory通过欺骗 .NET Framework 上的配置系统来以编程方式添加,请参阅添加没有 App.Config 的 DbProviderFactory以了解如何操作。


推荐阅读