Skip to content
sunkaixuan edited this page Jun 2, 2019 · 9 revisions

1.use case

public  SqlSugarClient GetInstance()
{
    SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
        {
            ConnectionString = "Server=.xxxxx",
            DbType = DbType.SqlServer,
            IsAutoCloseConnection = true,
            InitKeyType = InitKeyType.Attribute
        });
    //Print sql
    db.Aop.OnLogExecuting = (sql, pars) =>
    {
          Console.WriteLine(sql);
          Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
    };
    return db;
}

var db=GetInstance();
db.Queryable<T>().ToList();//Will enter the event

It can also be written like this

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
    DbType = DbType.SqlServer,
    ConnectionString = Config.ConnectionString,
    InitKeyType = InitKeyType.Attribute,
    IsAutoCloseConnection = true,
    AopEvents = new AopEvents
    {
        OnLogExecuting = (sql, p) =>
        {
            Console.WriteLine(sql);
            Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
        }
    }
});

2.Frequently used events

db.Aop.OnLogExecuted = (sql, pars) => //SQL executed event
{
 
};
db.Aop.OnLogExecuting = (sql, pars) => //SQL executing event (pre-execution)
{
 
};
db.Aop.OnError = (exp) =>//SQL execution error event
{
    //exp.sql             
};
db.Aop.OnExecutingChangeSql = (sql, pars) => //SQL executing event (pre-execution,SQL script can be modified)
{
    return new KeyValuePair<string, SugarParameter[]>(sql,pars);
};

3.Get data changes

db.Aop.OnDiffLogEvent = it =>
{
                var editBeforeData = it.BeforeData;
                var editAfterData = it.AfterData;
                var sql = it.Sql;
                var parameter = it.Parameters;
                var data = it.BusinessData;
                var time = it.Time;
                var  diffType=it.DiffType;//enum insert 、update and delete  
                 
                //Write logic
};
 
 
db.Insertable(new Student() { Name = "beforeName" })
            .EnableDiffLogEvent(new {  title="add student"})
            .ExecuteReturnIdentity();
 
db.Updateable<Student>(new Student()
            {
                Id = id,
                CreateTime = DateTime.Now,
                Name = "afterName",
                SchoolId = 2
            })
            .EnableDiffLogEvent(new { title = "update Student", Modular = 1, Operator = "admin" })
            .ExecuteCommand();
 
 
 db.Deleteable<Student>(id)
            .EnableDiffLogEvent(new { title = "delete student" })
            .ExecuteCommand();