有谁知道如何让消息选项卡输出通过Dapper传播到我的C#代码,以便我可以在某处显示它?
目前,我知道如何使行受影响计数和异常,但不是很多。
public static void ExecuteSqlCommand(string connectionString, string sql)
{
using (var db = new SqlConnection(connectionString))
{
var count = db.Execute(sql, null, null, 240);
Console.WriteLine(count); //can get count of rows affected but not rest of output from Messages Tab in SSMS.
}
}
我已经尝试运行SQL Server Profiler来查看消息是否在那里显示,但也没有看到任何消息。我知道在SQL Server Management Studio中运行我的SQL脚本时会创建一条消息,它似乎无处可去。
我已经调查了db.InfoMessage但是没有那样工作,并且变得有点推动时间。
例如,当我运行需要更正的创建表脚本时,我收到一条消息“警告!最大密钥长度为900字节。索引'UQ_UniqueMachineInfo'的最大长度为2428字节。对于某些大值组合,插入/更新操作将失败。“我需要通过代码显示。
您没有将事件处理程序连接到连接上的InfoMessage事件。
public static void ExecuteSqlCommand(string connectionString, string sql)
{
using (var db = new SqlConnection(connectionString))
{
db.InfoMessage += new SqlInfoMessageEventHandler(db_InfoMessage);
var count = db.Execute(sql, null, null, 240);
Console.WriteLine(count); //can get count of rows affected but not rest of output from Messages Tab in SSMS.
}
}
void db_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
// handle here and look at e.Message
}