簡體   English   中英

將 SqlConnection.InfoMessage 保存到實體框架 6 中的字符串

[英]Saving SqlConnection.InfoMessage to string in Entity Framework 6

如何捕獲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只是 static 字符串。

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'");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM