Add db.Ado.SqlStackTrace

This commit is contained in:
skx
2020-11-18 01:15:04 +08:00
parent 1080153ff8
commit bb842a6dd2
5 changed files with 66 additions and 7 deletions

View File

@@ -40,6 +40,7 @@ namespace SqlSugar
internal bool OldClearParameters { get; set; } internal bool OldClearParameters { get; set; }
public IDataParameterCollection DataReaderParameters { get; set; } public IDataParameterCollection DataReaderParameters { get; set; }
public TimeSpan SqlExecutionTime { get { return AfterTime - BeforeTime; } } public TimeSpan SqlExecutionTime { get { return AfterTime - BeforeTime; } }
public StackTraceInfo SqlStackTrace { get { return UtilMethods.GetStackTrace(); } }
public bool IsDisableMasterSlaveSeparation { get; set; } public bool IsDisableMasterSlaveSeparation { get; set; }
internal DateTime BeforeTime = DateTime.MinValue; internal DateTime BeforeTime = DateTime.MinValue;
internal DateTime AfterTime = DateTime.MinValue; internal DateTime AfterTime = DateTime.MinValue;

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class StackTraceInfo
{
public string FirstFileName { get { return this.MyStackTraceList.First().FileName; } }
public string FirstMethodName { get { return this.MyStackTraceList.First().MethodName; } }
public int FirstLine { get { return this.MyStackTraceList.First().Line; } }
public List<StackTraceInfoItem> MyStackTraceList { get; set; }
public List<StackTraceInfoItem> SugarStackTraceList { get; set; }
}
public class StackTraceInfoItem
{
public string FileName { get; set; }
public string MethodName { get; set; }
public int Line { get; set; }
}
}

View File

@@ -21,7 +21,7 @@ namespace SqlSugar
void ExecuteBefore(string sql, SugarParameter[] pars); void ExecuteBefore(string sql, SugarParameter[] pars);
void ExecuteAfter(string sql, SugarParameter[] pars); void ExecuteAfter(string sql, SugarParameter[] pars);
bool IsEnableLogEvent{get;set;} bool IsEnableLogEvent{get;set;}
StackTraceInfo SqlStackTrace { get; }
IDataParameterCollection DataReaderParameters { get; set; } IDataParameterCollection DataReaderParameters { get; set; }
CommandType CommandType { get; set; } CommandType CommandType { get; set; }

View File

@@ -88,6 +88,7 @@
<Compile Include="Abstract\FilterProvider\FilterProvider.cs" /> <Compile Include="Abstract\FilterProvider\FilterProvider.cs" />
<Compile Include="Abstract\InsertableProvider\InsertableProvider.cs" /> <Compile Include="Abstract\InsertableProvider\InsertableProvider.cs" />
<Compile Include="Abstract\DeleteProvider\DeleteableProvider.cs" /> <Compile Include="Abstract\DeleteProvider\DeleteableProvider.cs" />
<Compile Include="Entities\StackTraceInfo.cs" />
<Compile Include="Entities\SubInsertTree.cs" /> <Compile Include="Entities\SubInsertTree.cs" />
<Compile Include="OnlyNet\KdbndpInserttable.cs" /> <Compile Include="OnlyNet\KdbndpInserttable.cs" />
<Compile Include="Interface\ISubInsertable.cs" /> <Compile Include="Interface\ISubInsertable.cs" />

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Diagnostics;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
@@ -44,6 +45,38 @@ namespace SqlSugar
return value; return value;
} }
public static StackTraceInfo GetStackTrace()
{
StackTrace st = new StackTrace(true);
StackTraceInfo info = new StackTraceInfo();
info.MyStackTraceList = new List<StackTraceInfoItem>();
info.SugarStackTraceList = new List<StackTraceInfoItem>();
for (int i = 0; i < st.FrameCount; i++)
{
var frame = st.GetFrame(i);
if (frame.GetMethod().Module.Name.ToLower() != "sqlsugar.dll"&& frame.GetMethod().Name.First()!='<')
{
info.MyStackTraceList.Add(new StackTraceInfoItem()
{
FileName = frame.GetFileName(),
MethodName = frame.GetMethod().Name,
Line = frame.GetFileLineNumber()
});
}
else
{
info.SugarStackTraceList.Add(new StackTraceInfoItem()
{
FileName = frame.GetFileName(),
MethodName = frame.GetMethod().Name,
Line = frame.GetFileLineNumber()
});
}
}
return info;
}
internal static T To<T>(object value) internal static T To<T>(object value)
{ {
return (T)To(value, typeof(T)); return (T)To(value, typeof(T));
@@ -59,7 +92,7 @@ namespace SqlSugar
itemSql = Regex.Replace(itemSql, string.Format(@"{0}\)", "\\" + itemParameter.ParameterName), newName + ")", RegexOptions.IgnoreCase); itemSql = Regex.Replace(itemSql, string.Format(@"{0}\)", "\\" + itemParameter.ParameterName), newName + ")", RegexOptions.IgnoreCase);
itemSql = Regex.Replace(itemSql, string.Format(@"{0}\,", "\\" + itemParameter.ParameterName), newName + ",", RegexOptions.IgnoreCase); itemSql = Regex.Replace(itemSql, string.Format(@"{0}\,", "\\" + itemParameter.ParameterName), newName + ",", RegexOptions.IgnoreCase);
itemSql = Regex.Replace(itemSql, string.Format(@"{0}$", "\\" + itemParameter.ParameterName), newName, RegexOptions.IgnoreCase); itemSql = Regex.Replace(itemSql, string.Format(@"{0}$", "\\" + itemParameter.ParameterName), newName, RegexOptions.IgnoreCase);
itemSql = Regex.Replace(itemSql, string.Format(@"\+{0}\+", "\\" + itemParameter.ParameterName), "+"+newName+"+", RegexOptions.IgnoreCase); itemSql = Regex.Replace(itemSql, string.Format(@"\+{0}\+", "\\" + itemParameter.ParameterName), "+" + newName + "+", RegexOptions.IgnoreCase);
itemSql = Regex.Replace(itemSql, string.Format(@"\|\|{0}\|\|", "\\" + itemParameter.ParameterName), "+" + newName + "+", RegexOptions.IgnoreCase); itemSql = Regex.Replace(itemSql, string.Format(@"\|\|{0}\|\|", "\\" + itemParameter.ParameterName), "+" + newName + "+", RegexOptions.IgnoreCase);
return itemSql; return itemSql;
} }
@@ -119,7 +152,7 @@ namespace SqlSugar
return (T)Convert.ChangeType(obj, typeof(T)); return (T)Convert.ChangeType(obj, typeof(T));
} }
internal static void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex,string append=null) internal static void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex, string append = null)
{ {
if (appendSql.HasValue() && parameters.HasValue()) if (appendSql.HasValue() && parameters.HasValue())
{ {
@@ -127,7 +160,7 @@ namespace SqlSugar
{ {
//Compatible with.NET CORE parameters case //Compatible with.NET CORE parameters case
var name = parameter.ParameterName; var name = parameter.ParameterName;
string newName = name +append+ addIndex; string newName = name + append + addIndex;
appendSql = ReplaceSqlParameter(appendSql, parameter, newName); appendSql = ReplaceSqlParameter(appendSql, parameter, newName);
parameter.ParameterName = newName; parameter.ParameterName = newName;
} }