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; }
|
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;
|
||||||
|
|||||||
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 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; }
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user