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
。我希望它能起作用。感谢您的帮助,这似乎是互联网上的第一个例子。