如何捕获SqlConnection.InfoMessage
并将其保存到string
中?我找不到任何例子,所以我在这里问。
数据库上的示例操作:
public async Task AddAsync(Items record)
{
using (var context = new DBEntities())
{
context.Configuration.LazyLoadingEnabled = false;
context.Items.Add(record);
await context.SaveChangesAsync();
}
}
在这个例子中,我该怎么做呢?
如果我理解正确的话,它会让我捕获PRINT
消息,而这正是我想要做的。
编辑
我这样做正确吗?
public async Task AddAsync(Items record)
{
using (var context = new DBEntities())
{
var con = (SqlConnection)context.Database.Connection;
context.Configuration.LazyLoadingEnabled = false;
context.Items.Add(record);
await context.SaveChangesAsync();
con.InfoMessage += (obj, args) =>
{
SQLServerLogHandler.LogDisplay.LogPrint = args.Message;
};
}
}
我只对来自服务器的最新消息感兴趣。SQLServerLogHandler.LogDisplay.LogPrint
只是一个静态字符串。
发布于 2020-05-20 16:32:11
EF6:
var messages = new List<string>();
var con = (SqlConnection)db.Database.Connection;
con.InfoMessage += (s, a) =>
{
messages.Add(a.Message);
};
db.Database.ExecuteSqlCommand("print 'foo'");
EF核心:
var messages = new List<string>();
var con = (SqlConnection)db.Database.GetDbConnection();
con.InfoMessage += (s, a) =>
{
messages.Add(a.Message);
};
db.Database.ExecuteSqlRaw("print 'foo'");
https://stackoverflow.com/questions/61918000
复制相似问题