我目前正在创建具有各种方法的SQLWorker类,这些方法作为更广泛框架的一部分执行各种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”转换。数据。SqlClient。“连接到”Microsoft。SqlServer。管理。普通。IRenewableToken
具体线路是
var server = new Server(new ServerConnection(connection));
ServerConnection类似乎需要一个IRenewableToken参数,但它有一个接受SqlConnection参数的构造函数。
我不确定我错过了什么,我相信我有正确的NugetPackages,并且有以下使用语句
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
你知道我在这里错过了什么吗?