c# - .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 中不存在。
我似乎有很多人在抱怨它,但我还没有找到任何覆盖等。你们对如何解决这个问题有任何想法吗?
PS:这不应该发生,我在 GitHub 上打开了一个问题,几周后他们修复了它并关闭了我的票,甚至在他们的 C# 新闻发布会上展示了它(我不记得是哪个)。
解决方案
该类DbProviderFactories
是很久以前设计的,注册工厂必须通过 .NET Framework 上的应用程序配置文件来完成。该RegisterFactory
方法后来才在 .NET Core 上添加,从未向后移植到 .NET Framework。
但是有一种方法可以DbProviderFactory
通过欺骗 .NET Framework 上的配置系统来以编程方式添加,请参阅添加没有 App.Config 的 DbProviderFactory以了解如何操作。
推荐阅读
- c - 对 C 指针及其在内存中的工作方式有疑问
- regex - Apache 将查询参数重写为路径(url)
- javascript - Vue-router 仅在未使用 vue cli 创建的应用程序中加载基本路径
- javascript - 点击时流星改变背景颜色
- c# - ProgressChanged 事件中的 Listview 更新太慢了应用程序
- javascript - 根据日期识别特定行
- javascript - 我无法从此 getElementbyId 获取数据
- git - 将 tarball 与 git 存储库匹配
- python - 从 youtube search api 过滤出实时视频
- rxjs - 我的 behaviorSubject 在 Angular 9 中加载页面时返回 null,它没有使用当前值更新