Closed SpikeXy closed 1 year ago
提供具本测试用例
引入版本
注册代码
services.AddScoped
var listConfig = new List<ConnectionConfig>();
listConfig.Add(new ConnectionConfig()
{
ConnectionString = connectstring,
DbType = DbType.MySql,
IsAutoCloseConnection = true,
//IsShardSameThread = false,
AopEvents = new AopEvents
{
OnExecutingChangeSql = (sql, pars) => //可以修改SQL和参数的值
{
return new KeyValuePair<string, SugarParameter[]>(sql, pars);
},
OnError = (exp) =>
{
var sql = UtilMethods.GetSqlString(DbType.MySql, exp.Sql, exp.Parametres as SugarParameter[]);
logger.LogError("db error, 错误的sql是" + sql);
},
OnLogExecuted = (sql, pars) =>
{
}
},
MoreSettings = new ConnMoreSettings()
{
//IsWithNoLockQuery = true,
IsAutoRemoveDataCache = true,
//设置为0001-01-01不生效,所以只能采用引入sqlsugar源码的方式来使用
DbMinDate = Convert.ToDateTime("0001-01-01 00:00:00")
},
InitKeyType = InitKeyType.Attribute,
});
return new SqlSugarScope(listConfig);
});
你这个具体代码实体类都没有
并未重现你的问题,请提供完整的用例
并未重现
你下载DEMO跑一下
https://github.com/SpikeXy/SqlsugarDemo1
这个看sql是没有问题,但是执行结果有问题,仍然是 1900-01-01 00:00:00
//看输出SQL var model = new Item_depositamount(); var sql=db.Insertable(model).ToSqlString(); var newid = db.Insertable(model).ExecuteReturnIdentity(); var newid2 = db.Insertable(model).ExecuteCommand();
代码库已更新
找到原因了,因这个里面的方法把Paramter的值改了
你这个AOP事件搞错了吧,不应该是修改SQL
删掉这个修改SQL的AOP就行了
好的,我多写了一个扩展方法把这个可以自定义minidate,这个aop挺好用的,谢谢
MoreSettings = new ConnMoreSettings() { DbMinDate = Convert.ToDateTime("0001-01-01") },
设置为0001-01-01不生效,修改为1990-01-01生效,旧系统存在大量逻辑使用0001-01-01判断,可否加上这个判断,来兼容老系统?