C# 正在实体框架6中将SqlConnection.InfoMessage保存为字符串
如何捕获C# 正在实体框架6中将SqlConnection.InfoMessage保存为字符串,c#,entity-framework-6,sqlconnection,C#,Entity Framework 6,Sqlconnection,如何捕获SqlConnection.InfoMessage并将其保存到string?我找不到任何例子,所以我在这里问 数据库上的示例操作: public async Task AddAsync(Items record) { using (var context = new DBEntities()) { context.Configuration.LazyLoadingEnabled
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();
}
}
我如何在这个例子中做到这一点
如果我理解正确,它将让我捕获打印
消息,而这正是我想要做的
编辑
我这样做对吗
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
只是静态字符串。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'");
var messages=newlist();
var con=(SqlConnection)db.Database.Connection;
con.InfoMessage+=(s,a)=>
{
消息。添加(a.Message);
};
ExecuteSqlCommand(“打印'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'");
var messages=newlist();
var con=(SqlConnection)db.Database.GetDbConnection();
con.InfoMessage+=(s,a)=>
{
消息。添加(a.Message);
};
ExecuteSqlRaw(“打印'foo'”);
在开始查看消息之前,需要添加事件处理程序。所以,如果希望看到SaveChanges生成的任何消息,请将其移到SaveChanges之前。好的,移动它。到目前为止,没有注册任何消息,因为没有触发PRINT
。我希望它能起作用。感谢您的帮助,这似乎是互联网上的第一个例子。