mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	v3.2.666-preview20220824
This commit is contained in:
		@@ -18,7 +18,7 @@
 | 
			
		||||
		<SignAssembly>true</SignAssembly>
 | 
			
		||||
		<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
 | 
			
		||||
		<DelaySign>false</DelaySign>
 | 
			
		||||
		<Version>3.2.666-preview20220823</Version>
 | 
			
		||||
		<Version>3.2.666-preview20220824</Version>
 | 
			
		||||
	</PropertyGroup>
 | 
			
		||||
 | 
			
		||||
	<ItemGroup>
 | 
			
		||||
 
 | 
			
		||||
@@ -65,7 +65,7 @@ namespace FreeSql.Oracle
 | 
			
		||||
#if oledb
 | 
			
		||||
                new System.Data.OleDb.OleDbCommand();
 | 
			
		||||
#else
 | 
			
		||||
                new Oracle.ManagedDataAccess.Client.OracleCommand();
 | 
			
		||||
                new global::Oracle.ManagedDataAccess.Client.OracleCommand();
 | 
			
		||||
            cmd.BindByName = true;
 | 
			
		||||
#endif
 | 
			
		||||
            return cmd;
 | 
			
		||||
 
 | 
			
		||||
@@ -34,17 +34,17 @@ namespace FreeSql.Oracle
 | 
			
		||||
                { typeof(int), CsToDb.New(OleDbType.Integer, "number", "number(11) NOT NULL", false, false, 0) },{ typeof(int?), CsToDb.New(OleDbType.Integer, "number", "number(11) NULL", false, true, null) },
 | 
			
		||||
                { typeof(long), CsToDb.New(OleDbType.BigInt, "number","number(21) NOT NULL", false, false, 0) },{ typeof(long?), CsToDb.New(OleDbType.BigInt, "number","number(21) NULL", false, true, null) },
 | 
			
		||||
 | 
			
		||||
                { typeof(byte), CsToDb.New(OleDbType.UnsignedTinyInt, "number","number(3) NOT NULL", true, false, 0) },{ typeof(byte?), CsToDb.New(OleDbType.UnsignedTinyInt, "number","number(3) NULL", true, true, null) },
 | 
			
		||||
                { typeof(ushort), CsToDb.New(OleDbType.UnsignedSmallInt, "number","number(5) NOT NULL", true, false, 0) },{ typeof(ushort?), CsToDb.New(OleDbType.UnsignedSmallInt, "number", "number(5) NULL", true, true, null) },
 | 
			
		||||
                { typeof(uint), CsToDb.New(OleDbType.UnsignedInt, "number", "number(10) NOT NULL", true, false, 0) },{ typeof(uint?), CsToDb.New(OleDbType.UnsignedInt, "number", "number(10) NULL", true, true, null) },
 | 
			
		||||
                { typeof(ulong), CsToDb.New(OleDbType.UnsignedBigInt, "number", "number(20) NOT NULL", true, false, 0) },{ typeof(ulong?), CsToDb.New(OleDbType.UnsignedBigInt, "number", "number(20) NULL", true, true, null) },
 | 
			
		||||
                { typeof(byte), CsToDb.New(OleDbType.SmallInt, "number","number(3) NOT NULL", true, false, 0) },{ typeof(byte?), CsToDb.New(OleDbType.SmallInt, "number","number(3) NULL", true, true, null) },
 | 
			
		||||
                { typeof(ushort), CsToDb.New(OleDbType.Decimal, "number","number(5) NOT NULL", true, false, 0) },{ typeof(ushort?), CsToDb.New(OleDbType.Decimal, "number", "number(5) NULL", true, true, null) },
 | 
			
		||||
                { typeof(uint), CsToDb.New(OleDbType.Decimal, "number", "number(10) NOT NULL", true, false, 0) },{ typeof(uint?), CsToDb.New(OleDbType.Decimal, "number", "number(10) NULL", true, true, null) },
 | 
			
		||||
                { typeof(ulong), CsToDb.New(OleDbType.Decimal, "number", "number(20) NOT NULL", true, false, 0) },{ typeof(ulong?), CsToDb.New(OleDbType.Decimal, "number", "number(20) NULL", true, true, null) },
 | 
			
		||||
 | 
			
		||||
                { typeof(double), CsToDb.New(OleDbType.Double, "float", "float(126) NOT NULL", false, false, 0) },{ typeof(double?), CsToDb.New(OleDbType.Double, "float", "float(126) NULL", false, true, null) },
 | 
			
		||||
                { typeof(float), CsToDb.New(OleDbType.Single, "float","float(63) NOT NULL", false, false, 0) },{ typeof(float?), CsToDb.New(OleDbType.Single, "float","float(63) NULL", false, true, null) },
 | 
			
		||||
                { typeof(decimal), CsToDb.New(OleDbType.Decimal, "number", "number(10,2) NOT NULL", false, false, 0) },{ typeof(decimal?), CsToDb.New(OleDbType.Decimal, "number", "number(10,2) NULL", false, true, null) },
 | 
			
		||||
 | 
			
		||||
                { typeof(TimeSpan), CsToDb.New(OleDbType.DBTime, "interval day to second","interval day(2) to second(6) NOT NULL", false, false, 0) },{ typeof(TimeSpan?), CsToDb.New(OleDbType.DBTime, "interval day to second", "interval day(2) to second(6) NULL",false, true, null) },
 | 
			
		||||
                { typeof(DateTime), CsToDb.New(OleDbType.DBTime, "timestamp", "timestamp(6) NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateTime?), CsToDb.New(OleDbType.DBTime, "timestamp", "timestamp(6) NULL", false, true, null) },
 | 
			
		||||
                { typeof(DateTime), CsToDb.New(OleDbType.DBTimeStamp, "timestamp", "timestamp(6) NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateTime?), CsToDb.New(OleDbType.DBTimeStamp, "timestamp", "timestamp(6) NULL", false, true, null) },
 | 
			
		||||
                { typeof(DateTimeOffset), CsToDb.New(OleDbType.DBTimeStamp, "timestamp with local time zone", "timestamp(6) with local time zone NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateTimeOffset?), CsToDb.New(OleDbType.DBTimeStamp, "timestamp with local time zone", "timestamp(6) with local time zone NULL", false, true, null) },
 | 
			
		||||
 | 
			
		||||
                { typeof(byte[]), CsToDb.New(OleDbType.VarBinary, "blob", "blob NULL", false, null, new byte[0]) },
 | 
			
		||||
 
 | 
			
		||||
@@ -42,17 +42,17 @@ namespace FreeSql.Oracle
 | 
			
		||||
                case "number(11)": return OleDbType.Integer;
 | 
			
		||||
                case "number(21)": return OleDbType.BigInt;
 | 
			
		||||
 | 
			
		||||
                case "number(3)": return OleDbType.UnsignedTinyInt;
 | 
			
		||||
                case "number(5)": return OleDbType.UnsignedSmallInt;
 | 
			
		||||
                case "number(10)": return OleDbType.UnsignedInt;
 | 
			
		||||
                case "number(20)": return OleDbType.UnsignedBigInt;
 | 
			
		||||
                case "number(3)": return OleDbType.TinyInt;
 | 
			
		||||
                case "number(5)": return OleDbType.Decimal;
 | 
			
		||||
                case "number(10)": return OleDbType.Decimal;
 | 
			
		||||
                case "number(20)": return OleDbType.Decimal;
 | 
			
		||||
 | 
			
		||||
                case "float(126)": return OleDbType.Double;
 | 
			
		||||
                case "float(63)": return OleDbType.Single;
 | 
			
		||||
                case "number(10,2)": return OleDbType.Decimal;
 | 
			
		||||
 | 
			
		||||
                case "interval day(2) to second(6)": return OleDbType.DBTime;
 | 
			
		||||
                case "timestamp(6)": return OleDbType.DBTime;
 | 
			
		||||
                case "timestamp(6)": return OleDbType.DBTimeStamp;
 | 
			
		||||
                case "timestamp(6) with local time zone": return OleDbType.DBTimeStamp;
 | 
			
		||||
 | 
			
		||||
                case "blob": return OleDbType.VarBinary;
 | 
			
		||||
@@ -73,10 +73,10 @@ namespace FreeSql.Oracle
 | 
			
		||||
                    return OleDbType.DBTime;
 | 
			
		||||
                case "date":
 | 
			
		||||
                    _dicDbToCs.TryAdd(dbfull, _dicDbToCs["date"]);
 | 
			
		||||
                    return OleDbType.DBTime;
 | 
			
		||||
                    return OleDbType.DBTimeStamp;
 | 
			
		||||
                case "timestamp":
 | 
			
		||||
                    _dicDbToCs.TryAdd(dbfull, _dicDbToCs["timestamp(6)"]);
 | 
			
		||||
                    return OleDbType.DBTime;
 | 
			
		||||
                    return OleDbType.DBTimeStamp;
 | 
			
		||||
                case "timestamp with local time zone":
 | 
			
		||||
                    _dicDbToCs.TryAdd(dbfull, _dicDbToCs["timestamp(6) with local time zone"]);
 | 
			
		||||
                    return OleDbType.DBTimeStamp;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,10 @@
 | 
			
		||||
using FreeSql.Oracle.Curd;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Data.Common;
 | 
			
		||||
using System.Text.RegularExpressions;
 | 
			
		||||
using System.Collections.Concurrent;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
using System.IO;
 | 
			
		||||
 | 
			
		||||
namespace FreeSql.Oracle
 | 
			
		||||
{
 | 
			
		||||
@@ -25,7 +28,31 @@ namespace FreeSql.Oracle
 | 
			
		||||
 | 
			
		||||
            this.DbFirst = new OracleDbFirst(this, this.InternalCommonUtils, this.InternalCommonExpression);
 | 
			
		||||
            this.CodeFirst = new OracleCodeFirst(this, this.InternalCommonUtils, this.InternalCommonExpression);
 | 
			
		||||
 | 
			
		||||
#if oledb
 | 
			
		||||
            Select0Provider._dicMethodDataReaderGetValue[typeof(Guid)] = typeof(DbDataReader).GetMethod("GetGuid", new Type[] { typeof(int) });
 | 
			
		||||
            Select0Provider._dicMethodDataReaderGetValue[typeof(bool)] = typeof(DbDataReader).GetMethod("GetBoolean", new Type[] { typeof(int) });
 | 
			
		||||
            Select0Provider._dicMethodDataReaderGetValue[typeof(int)] = typeof(DbDataReader).GetMethod("GetDecimal", new Type[] { typeof(int) });
 | 
			
		||||
            Select0Provider._dicMethodDataReaderGetValue[typeof(long)] = typeof(DbDataReader).GetMethod("GetDecimal", new Type[] { typeof(int) });
 | 
			
		||||
            Select0Provider._dicMethodDataReaderGetValue[typeof(decimal)] = typeof(DbDataReader).GetMethod("GetDecimal", new Type[] { typeof(int) });
 | 
			
		||||
            Select0Provider._dicMethodDataReaderGetValue[typeof(DateTime)] = typeof(DbDataReader).GetMethod("GetDateTime", new Type[] { typeof(int) });
 | 
			
		||||
            Select0Provider._dicMethodDataReaderGetValue[typeof(string)] = typeof(DbDataReader).GetMethod("GetString", new Type[] { typeof(int) });
 | 
			
		||||
 | 
			
		||||
            this.Aop.CommandBefore += (_, e) =>
 | 
			
		||||
            {
 | 
			
		||||
                if (e.Command.Parameters.Count > 0)
 | 
			
		||||
                    e.Command.CommandText = _regCommandText.Replace(e.Command.CommandText, "?");
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.Aop.AuditDataReader += (_, e) =>
 | 
			
		||||
            {
 | 
			
		||||
                
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        readonly static Regex _regCommandText = new Regex(@"\:[_\w]+", RegexOptions.Compiled);
 | 
			
		||||
#else
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        ~OracleProvider() => this.Dispose();
 | 
			
		||||
        int _disposeCounter;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user