mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-12-17 17:41:28 +08:00
Add db.Ado.SqlStackTrace
This commit is contained in:
@@ -40,6 +40,7 @@ namespace SqlSugar
|
||||
internal bool OldClearParameters { get; set; }
|
||||
public IDataParameterCollection DataReaderParameters { get; set; }
|
||||
public TimeSpan SqlExecutionTime { get { return AfterTime - BeforeTime; } }
|
||||
public StackTraceInfo SqlStackTrace { get { return UtilMethods.GetStackTrace(); } }
|
||||
public bool IsDisableMasterSlaveSeparation { get; set; }
|
||||
internal DateTime BeforeTime = DateTime.MinValue;
|
||||
internal DateTime AfterTime = DateTime.MinValue;
|
||||
|
||||
24
Src/Asp.Net/SqlSugar/Entities/StackTraceInfo.cs
Normal file
24
Src/Asp.Net/SqlSugar/Entities/StackTraceInfo.cs
Normal 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; }
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ namespace SqlSugar
|
||||
void ExecuteBefore(string sql, SugarParameter[] pars);
|
||||
void ExecuteAfter(string sql, SugarParameter[] pars);
|
||||
bool IsEnableLogEvent{get;set;}
|
||||
|
||||
StackTraceInfo SqlStackTrace { get; }
|
||||
IDataParameterCollection DataReaderParameters { get; set; }
|
||||
CommandType CommandType { get; set; }
|
||||
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
<Compile Include="Abstract\FilterProvider\FilterProvider.cs" />
|
||||
<Compile Include="Abstract\InsertableProvider\InsertableProvider.cs" />
|
||||
<Compile Include="Abstract\DeleteProvider\DeleteableProvider.cs" />
|
||||
<Compile Include="Entities\StackTraceInfo.cs" />
|
||||
<Compile Include="Entities\SubInsertTree.cs" />
|
||||
<Compile Include="OnlyNet\KdbndpInserttable.cs" />
|
||||
<Compile Include="Interface\ISubInsertable.cs" />
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
@@ -44,6 +45,38 @@ namespace SqlSugar
|
||||
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)
|
||||
{
|
||||
return (T)To(value, typeof(T));
|
||||
|
||||
Reference in New Issue
Block a user