From 738eeb81a8f3556cd367184278f285b075aea14c Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Sun, 22 Dec 2019 03:20:54 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E8=A1=A5=E5=85=85=20=E8=BE=BE=E6=A2=A6=20D?= =?UTF-8?q?bFirst=20=E7=B1=BB=E5=9E=8B=E5=A4=84=E7=90=86=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FreeSql.Tests.Provider.Odbc/g.cs | 5 +- .../Dameng/OdbcDamengDbFirst.cs | 54 +++++++++++++++++-- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/g.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/g.cs index 7ae66c0d..4bb24a55 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/g.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/g.cs @@ -83,9 +83,9 @@ public class g .Build()); public static IFreeSql dameng => damemgLazy.Value; - + //启动南大通用数据库 oninit -vy static Lazy gbaseLazy = new Lazy(() => new FreeSql.FreeSqlBuilder() - .UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789") + .UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={GBase ODBC DRIVER (64-bit)};Server=192.168.164.10:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789") //.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789")) .UseAutoSyncStructure(true) .UseLazyLoading(true) @@ -98,6 +98,7 @@ public class g .Build()); public static IFreeSql gbase => gbaseLazy.Value; + //启动神州通用数据库 /etc/init.d/oscardb_OSRDBd start //SYSDBA 密码 szoscar55 diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengDbFirst.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengDbFirst.cs index 3fb77c3f..40b2d1eb 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengDbFirst.cs @@ -52,17 +52,49 @@ namespace FreeSql.Odbc.Dameng case "blob": return OdbcType.VarBinary; case "nvarchar2(255)": return OdbcType.NVarChar; - case "char(36 char)": return OdbcType.Char; + case "char(36)": return OdbcType.Char; } switch (column.DbTypeText.ToLower()) { + case "bit": + _dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(1)"]); + return OdbcType.Bit; + case "smallint": + _dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(5)"]); + return OdbcType.SmallInt; + case "byte": + _dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(3)"]); + return OdbcType.TinyInt; + case "tinyint": + _dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(3)"]); + return OdbcType.TinyInt; + case "integer": + _dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(11)"]); + return OdbcType.Int; + case "bigint": + _dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(21)"]); + return OdbcType.Int; + case "dec": + case "decimal": + case "numeric": case "number": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["number(10,2)"]); return OdbcType.Decimal; - case "float": - _dicDbToCs.TryAdd(dbfull, _dicDbToCs["float(126)"]); - return OdbcType.Double; + case "time": case "interval day to second": + case "interval year to month": + case "interval year": + case "interval month": + case "interval day": + case "interval day to hour": + case "interval day to minute": + case "interval hour": + case "interval hour to minute": + case "interval hour to second": + case "interval minute": + case "interval minute to second": + case "interval second": + case "time with time zone": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["interval day(2) to second(6)"]); return OdbcType.Time; case "date": @@ -72,17 +104,27 @@ namespace FreeSql.Odbc.Dameng _dicDbToCs.TryAdd(dbfull, _dicDbToCs["timestamp(6)"]); return OdbcType.DateTime; case "timestamp with local time zone": + case "timestamp with time zone": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["timestamp(6) with local time zone"]); return OdbcType.DateTime; + case "binary": + case "varbinary": case "blob": + case "image": + case "longvarbinary": + case "bfile": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["blob"]); return OdbcType.VarBinary; case "nvarchar2": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]); return OdbcType.NVarChar; + case "varchar": case "varchar2": + case "text": + case "longvarchar": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]); return OdbcType.NVarChar; + case "character": case "char": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]); return OdbcType.Char; @@ -101,9 +143,13 @@ namespace FreeSql.Odbc.Dameng case "long raw": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["blob"]); return OdbcType.VarBinary; + case "real": case "binary_float": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["float(63)"]); return OdbcType.Real; + case "double": + case "float": + case "double precision": case "binary_double": _dicDbToCs.TryAdd(dbfull, _dicDbToCs["float(126)"]); return OdbcType.Double;