我已经将我在.NET Core2.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上就不行了。因为4.7.2中不存在DbProviderFactories.RegisterFactory。
我似乎有很多人在抱怨它,但我还没有找到任何覆盖等。你们有什么想法来解决这个问题吗?


PS:这是不应该发生的,我在GitHub上打开了一个问题,几周后他们修复了它,并关闭了我的门票,甚至在他们的C#新闻发布会上显示了(我不记得是哪个了)。
发布于 2021-01-15 15:43:49
DbProviderFactories类是很久以前设计的,注册工厂必须通过.NET框架上的应用程序配置文件来完成。RegisterFactory方法是后来才在.NET核心上添加的,并且从未向后移植到.NET框架。
但是有一种方法可以通过欺骗.NET框架上的配置系统来以编程方式添加DbProviderFactory,请参阅Add a DbProviderFactory without an App.Config以了解如何做到这一点。
发布于 2019-03-28 22:10:11
在.Net框架中切换提供程序的方法是这样的:
var dbProvider = DbProviderFactories.GetFactory("System.Data.MySql")这里有几个很好的链接,展示了如何以旧的方式设置DbProviderFactory:
https://blog.codeinside.eu/2016/12/31/dbproviderfactory-write-database-agnostic-adonet-code/
希望这能让你走上正轨!
https://stackoverflow.com/questions/55026261
复制相似问题