无法从 'System.Data.SqlClient.SqlConnection' 转换为 'Microsoft.SqlServer.Management.Common.IRenewableToken'

cannot convert from 'System.Data.SqlClient.SqlConnection' to 'Microsoft.SqlServer.Management.Common.IRenewableToken'

我目前正在使用各种方法创建 SQLWorker class,这些方法作为更广泛的框架的一部分执行各种 sql 命令。我有一个用于执行 sql 脚本的方法。如下所示:

public object ExecuteScript(string sql, ExecutionType executionType = ExecutionType.NonQuery,
        int statementTimeout = 1800)
    {

        using (var connection = new SqlConnection(ConnectionString))
        {
            connection.InfoMessage += (sender, args) =>
                _infoMessageText.AppendLine(args.Message);

            var server = new Server(new ServerConnection(connection));
            server.ConnectionContext.StatementTimeout = statementTimeout;
            switch (executionType)
            {
                case ExecutionType.NonQuery:
                    return server.ConnectionContext.ExecuteNonQuery(sql);
                case ExecutionType.Scalar:
                    return server.ConnectionContext.ExecuteScalar(sql);
                case ExecutionType.Reader:
                    return server.ConnectionContext.ExecuteReader(sql);
            }
        }
        return null;
    }

我目前收到错误: 参数 1:无法从 'System.Data.SqlClient.SqlConnection' 转换为 'Microsoft.SqlServer.Management.Common.IRenewableToken'

特定行是

 var server = new Server(new ServerConnection(connection));

ServerConnection Class 似乎需要 IRenewableToken 参数,但它具有接受 SqlConnection 参数的构造函数。

我不确定我遗漏了什么我相信我有正确的 NugetPackages 并且有以下 using 语句

using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

关于我在这里遗漏的任何想法?

这已通过将 using 语句从使用 System.Data.SqlClient 更改为 Microsoft.Data.SqlClient 来解决。我正在重构旧版本的代码,他们使用的是旧版本的 Microsoft.Sqlserver.Management.objects nuget 包和 System.Data.SqlClient。使用最新版本的 Microsoft.Sqlserver.Management.objects 它不起作用。