SqlClientFactory.CreateCommandBuilder返回null

时间:2017-11-29 14:38:56

标签: ado.net .net-core

我将一个完整的框架项目移植到.NET Core 2.0。它打电话给

var builder = SqlClientFactory.Instance.CreateCommandBuilder();
...

所以我创建了一个新的.NET Core项目并添加了对System.Data.SqlClient 4.4.0的引用。不幸的是,似乎DbProviderFactory.CreateCommandBuilder未被覆盖,因此对CreateCommandBuilder的调用始终会返回null

我已经尝试检查此API是否正式可用,而on the first sight似乎是这样。因为该页面说:

  • 平台:.NET Core
  • 版本:2.0
  • 程序集:System.Data.SqlClient,Version = 4.3.1.0,PublicKeyToken = b03f5f7f11d50a3a

我使用的System.Data.SqlClient 4.4.0 高于4.3.1。

然而,在我的下一个惊喜中,我发现typeof(SqlClientFactory).AssemblySystem.Data.SqlClient 4.2.0。。我必须学习assembly and package versions are allowed to be inconsistent。我不确定,为什么https://apisof.net告诉我Core 2.0。它似乎不可信任。

所以,我去了the .NET API Browser,他正确地没有为CreateCommandBuilder列出SqlClientFactory

我的问题是,如何才能获得前面提到的System.Data.SqlClient, Version=4.3.1汇编?在撰写本文时,我使用的4.4 nuget似乎是最新版本。

我唯一能想到的就是编译我自己的corefx结帐,以便获得有效CreateCommandBuilder。或者像SqlCommandBuilder一样开始复制点点滴滴。但我不知道这是不是一个好主意。

0 个答案:

没有答案