diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index b3c791444..fe68d7502 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -1434,6 +1434,7 @@ namespace SqlSugar this.Connection = this.MasterConnection; this.Context.CurrentConnectionConfig.ConnectionString = this.MasterConnectionString; } + this.Context.SugarActionType = SugarActionType.UnKnown; } private bool IsRead(string sql) diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs index 5e780018e..623b195ba 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs @@ -31,6 +31,7 @@ namespace SqlSugar public MappingColumnList MappingColumns { get; set; } public IgnoreColumnList IgnoreColumns { get; set; } public IgnoreColumnList IgnoreInsertColumns { get; set; } + public SugarActionType SugarActionType { get; set; } = SugarActionType.UnKnown; public ConfigQuery ConfigQuery { get { @@ -258,6 +259,7 @@ namespace SqlSugar } protected ISugarQueryable CreateQueryable(ISugarQueryable result) { + this.SugarActionType = SugarActionType.Query; Check.Exception(typeof(T).IsClass() == false || typeof(T).GetConstructors().Length == 0, "Queryable<{0}> Error ,{0} is invalid , need is a class,and can new().", typeof(T).Name); var sqlBuilder = InstanceFactory.GetSqlbuilder(CurrentConnectionConfig); result.Context = this.Context; @@ -272,6 +274,7 @@ namespace SqlSugar } protected InsertableProvider CreateInsertable(T[] insertObjs) where T : class, new() { + this.SugarActionType = SugarActionType.Insert; var result = InstanceFactory.GetInsertableProvider(this.CurrentConnectionConfig); var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ; result.Context = this; @@ -287,6 +290,7 @@ namespace SqlSugar } protected DeleteableProvider CreateDeleteable() where T : class, new() { + this.SugarActionType = SugarActionType.Delete; var result = InstanceFactory.GetDeleteableProvider(this.CurrentConnectionConfig); var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ; result.Context = this; @@ -299,6 +303,7 @@ namespace SqlSugar } protected UpdateableProvider CreateUpdateable(T[] UpdateObjs) where T : class, new() { + this.SugarActionType = SugarActionType.Update; var result = InstanceFactory.GetUpdateableProvider(this.CurrentConnectionConfig); var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ; result.Context = this; @@ -315,6 +320,7 @@ namespace SqlSugar protected void CreateQueryJoin(Expression joinExpression, Type[] types, ISugarQueryable queryable) { + this.SugarActionType = SugarActionType.Query; this.CreateQueryable(queryable); string shortName = string.Empty; List paramters = new List(); @@ -328,6 +334,7 @@ namespace SqlSugar } protected void CreateEasyQueryJoin(Expression joinExpression, Type[] types, ISugarQueryable queryable) { + this.SugarActionType = SugarActionType.Query; this.CreateQueryable(queryable); string shortName = string.Empty; queryable.SqlBuilder.QueryBuilder.EasyJoinInfos = this.GetEasyJoinInfo(joinExpression, ref shortName, queryable.SqlBuilder, types); diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs index ee7baa81f..99a465d0c 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -1199,7 +1199,8 @@ namespace SqlSugar } #endregion - #region + + #region Fastest public IFastest Fastest() where T:class,new() { return new FastestProvider(this); diff --git a/Src/Asp.Net/SqlSugar/Enum/SugarActionType.cs b/Src/Asp.Net/SqlSugar/Enum/SugarActionType.cs new file mode 100644 index 000000000..43cb27e4f --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Enum/SugarActionType.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public enum SugarActionType + { + Insert=0, + Update=1, + Delete=2, + Query=3, + UnKnown = -1 + } +} diff --git a/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs b/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs index 041c86af3..0b9823c51 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs @@ -31,7 +31,7 @@ namespace SqlSugar EntityMaintenance EntityMaintenance { get; set; } QueryFilterProvider QueryFilter { get; set; } IContextMethods Utilities { get; set; } - + SugarActionType SugarActionType { get; set; } #region Deleteable IDeleteable Deleteable() where T : class, new(); diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs index 55cffe521..836a84bd1 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs @@ -164,8 +164,16 @@ namespace SqlSugar } else if (parameter.DbType == System.Data.DbType.DateTime) { - sqlParameter.Value = parameter.Value; - sqlParameter.DbType = System.Data.DbType.Date; + if (this.Context.SugarActionType == SugarActionType.Insert) + { + sqlParameter.Value = parameter.Value; + sqlParameter.DbType = System.Data.DbType.DateTime; + } + else + { + sqlParameter.Value = parameter.Value; + sqlParameter.DbType = System.Data.DbType.Date; + } } else if (parameter.DbType == System.Data.DbType.AnsiStringFixedLength) { diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index 2ff51a9a5..338404e0f 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -97,6 +97,7 @@ + diff --git a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs index 03744c06b..6e6ce2d55 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs @@ -49,6 +49,7 @@ namespace SqlSugar #endregion #region Global variable + public SugarActionType SugarActionType { get { return this.Context.SugarActionType; }set { this.Context.SugarActionType = value; } } public SqlSugarProvider Context { get { return GetContext(); } } public bool IsSystemTablesConfig => this.Context.IsSystemTablesConfig; public ConnectionConfig CurrentConnectionConfig { get { return _CurrentConnectionConfig; } set { _CurrentConnectionConfig = value; } } diff --git a/Src/Asp.Net/SqlSugar/SqlSugarScope.cs b/Src/Asp.Net/SqlSugar/SqlSugarScope.cs index 1db7cb3fe..4d533af9e 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarScope.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarScope.cs @@ -35,7 +35,7 @@ namespace SqlSugar this._configAction = configAction; } public SqlSugarClient ScopedContext{ get{ return GetContext();}} - + public SugarActionType SugarActionType { get => ScopedContext.SugarActionType;set=> ScopedContext.SugarActionType=value; } public MappingTableList MappingTables { get => ScopedContext.MappingTables; set => ScopedContext.MappingTables = value; } public MappingColumnList MappingColumns { get => ScopedContext.MappingColumns; set => ScopedContext.MappingColumns=value; } public IgnoreColumnList IgnoreColumns { get => ScopedContext.IgnoreColumns; set => ScopedContext.IgnoreColumns=value; }