mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-18 17:48:11 +08:00
Merge branch 'master' of https://gitee.com/sunkaixuan/sqlsugar_orm_4-0
This commit is contained in:
@@ -57,26 +57,19 @@ namespace OrmTest.Demo
|
||||
};
|
||||
|
||||
|
||||
var id = db.Queryable<Student>().First().Id;
|
||||
var id = db.Insertable(new Student() { Name="beforeName" }).ExecuteReturnIdentity();
|
||||
db.Updateable<Student>(new Student()
|
||||
{
|
||||
Id = id,
|
||||
CreateTime = DateTime.Now,
|
||||
Name = "before",
|
||||
SchoolId = 1
|
||||
})
|
||||
.EnableDiffLogEvent(new { title = "update Student", Modular = 1, Operator = "admin" }).ExecuteCommand();
|
||||
|
||||
|
||||
db.Updateable<Student>(new Student()
|
||||
{
|
||||
Id = id,
|
||||
CreateTime = DateTime.Now,
|
||||
Name = "after",
|
||||
Name = "afterName",
|
||||
SchoolId = 2
|
||||
})
|
||||
.EnableDiffLogEvent(new { title= "update Student", Modular=1, Operator="admin" })
|
||||
.ExecuteCommand();
|
||||
|
||||
db.Deleteable<Student>(id).EnableDiffLogEvent(new { title = "delete student" }).ExecuteCommand();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,9 +1,11 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SqlSugar
|
||||
@@ -16,6 +18,8 @@ namespace SqlSugar
|
||||
public DeleteBuilder DeleteBuilder { get; set; }
|
||||
public MappingTableList OldMappingTableList { get; set; }
|
||||
public bool IsAs { get; set; }
|
||||
public bool IsEnableDiffLogEvent { get; set; }
|
||||
public DiffLogModel diffModel { get; set; }
|
||||
public EntityInfo EntityInfo
|
||||
{
|
||||
get
|
||||
@@ -30,8 +34,12 @@ namespace SqlSugar
|
||||
var paramters = DeleteBuilder.Parameters == null ? null : DeleteBuilder.Parameters.ToArray();
|
||||
RestoreMapping();
|
||||
AutoRemoveDataCache();
|
||||
return Db.ExecuteCommand(sql, paramters);
|
||||
Before(sql);
|
||||
var result= Db.ExecuteCommand(sql, paramters);
|
||||
After(sql);
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool ExecuteCommandHasChange()
|
||||
{
|
||||
return ExecuteCommand() > 0;
|
||||
@@ -71,6 +79,16 @@ namespace SqlSugar
|
||||
return this; ;
|
||||
}
|
||||
|
||||
public IDeleteable<T> EnableDiffLogEvent(object businessData = null)
|
||||
{
|
||||
|
||||
diffModel = new DiffLogModel();
|
||||
this.IsEnableDiffLogEvent = true;
|
||||
diffModel.BusinessData = businessData;
|
||||
diffModel.DiffType = DiffType.delete;
|
||||
return this;
|
||||
}
|
||||
|
||||
public IDeleteable<T> Where(List<T> deleteObjs)
|
||||
{
|
||||
if (deleteObjs == null || deleteObjs.Count() == 0)
|
||||
@@ -329,5 +347,59 @@ namespace SqlSugar
|
||||
asyncDeleteBuilder.TableWithString = this.DeleteBuilder.TableWithString;
|
||||
return asyncDeleteable;
|
||||
}
|
||||
|
||||
private void After(string sql)
|
||||
{
|
||||
if (this.IsEnableDiffLogEvent)
|
||||
{
|
||||
var parameters = DeleteBuilder.Parameters;
|
||||
if (parameters == null)
|
||||
parameters = new List<SugarParameter>();
|
||||
diffModel.AfterDate = null;
|
||||
diffModel.Time = this.Context.Ado.SqlExecutionTime;
|
||||
if (this.Context.Ado.DiffLogEvent != null)
|
||||
this.Context.Ado.DiffLogEvent(diffModel);
|
||||
}
|
||||
}
|
||||
|
||||
private void Before(string sql)
|
||||
{
|
||||
if (this.IsEnableDiffLogEvent)
|
||||
{
|
||||
var parameters = DeleteBuilder.Parameters;
|
||||
if (parameters == null)
|
||||
parameters = new List<SugarParameter>();
|
||||
diffModel.BeforeData = GetDiffTable(sql, parameters);
|
||||
diffModel.Sql = sql;
|
||||
diffModel.Parameters = parameters.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
private List<DiffLogTableInfo> GetDiffTable(string sql, List<SugarParameter> parameters)
|
||||
{
|
||||
List<DiffLogTableInfo> result = new List<DiffLogTableInfo>();
|
||||
var whereSql = Regex.Replace(sql, ".* WHERE ", "", RegexOptions.Singleline);
|
||||
var dt = this.Context.Queryable<T>().Where(whereSql).AddParameters(parameters).ToDataTable();
|
||||
if (dt.Rows != null && dt.Rows.Count > 0)
|
||||
{
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
DiffLogTableInfo item = new DiffLogTableInfo();
|
||||
item.TableDescription = this.EntityInfo.TableDescription;
|
||||
item.TableName = this.EntityInfo.DbTableName;
|
||||
item.Columns = new List<DiffLogColumnInfo>();
|
||||
foreach (DataColumn col in dt.Columns)
|
||||
{
|
||||
DiffLogColumnInfo addItem = new DiffLogColumnInfo();
|
||||
addItem.Value = row[col.ColumnName];
|
||||
addItem.ColumnName = col.ColumnName;
|
||||
addItem.ColumnDescription = this.EntityInfo.Columns.First(it => it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase)).ColumnDescription;
|
||||
item.Columns.Add(addItem);
|
||||
}
|
||||
result.Add(item);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -557,10 +557,13 @@ namespace SqlSugar
|
||||
{
|
||||
if (this.IsEnableDiffLogEvent)
|
||||
{
|
||||
var parameters = UpdateBuilder.Parameters.ToList();
|
||||
var parameters = UpdateBuilder.Parameters;
|
||||
if (parameters == null)
|
||||
parameters = new List<SugarParameter>();
|
||||
diffModel.AfterDate = GetDiffTable(sql, parameters);
|
||||
diffModel.Time = this.Context.Ado.SqlExecutionTime;
|
||||
this.Context.Ado.DiffLogEvent(diffModel);
|
||||
if (this.Context.Ado.DiffLogEvent != null)
|
||||
this.Context.Ado.DiffLogEvent(diffModel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -569,6 +572,8 @@ namespace SqlSugar
|
||||
if (this.IsEnableDiffLogEvent)
|
||||
{
|
||||
var parameters = UpdateBuilder.Parameters;
|
||||
if (parameters == null)
|
||||
parameters = new List<SugarParameter>();
|
||||
diffModel.BeforeData = GetDiffTable(sql, parameters);
|
||||
diffModel.Sql = sql;
|
||||
diffModel.Parameters = parameters.ToArray();
|
||||
|
@@ -26,6 +26,7 @@ namespace SqlSugar
|
||||
IDeleteable<T> Where(string whereString, SugarParameter parameter);
|
||||
IDeleteable<T> Where(string whereString, SugarParameter[] parameters);
|
||||
IDeleteable<T> Where(string whereString, List<SugarParameter> parameters);
|
||||
IDeleteable<T> EnableDiffLogEvent(object businessData = null);
|
||||
IDeleteable<T> RemoveDataCache();
|
||||
KeyValuePair<string, List<SugarParameter>> ToSql();
|
||||
}
|
||||
|
Reference in New Issue
Block a user