![](/img/trans.png)
[英]SqlConnection InfoMessage not working with BeginExecuteNonQuery
[英]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.