dbcontext.Database.Log = sql => { HandleSqlLog(sql); };
private void HandleSqlLog(string sql)
{
if (string.IsNullOrEmpty(sql)) return;
sqlLog.Add(sql);
if (sql.Contains("Closed"))
{
var sqlStr = sqlLog.FirstOrDefault(x => x.Contains("SELECT") ||x.Contains("UPDATE") || x.Contains("INSERT") || x.Contains("DELETE"));
var sqlParms = sqlLog.Where(x => x.Contains("-- p__linq")).Select(x=> "@"+x.Replace("-- ",""));
foreach (var item in sqlParms)
{
var name = Regex.Match(item, @"@(.*?)[0-9]").Value;
var val = Regex.Match(item, @"'(.*?)'").Value;
sqlStr = sqlStr.Replace(name, val);
}
Trace.WriteLine("--------------------------------");
Trace.WriteLine(sqlStr);
Trace.WriteLine("--------------------------------");
sqlLog.Clear();
}
}
