无法从 '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 它不起作用。
我目前正在使用各种方法创建 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 它不起作用。