mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-18 20:08:15 +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