From 9bd6e83ed7b939fdf1f3bd66277342d4aee8c009 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 17 Dec 2021 18:52:55 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20GBase=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=AD=98=E5=82=A8=E8=BF=87=E7=A8=8B=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=8C=96=E7=9A=84=E6=89=A7=E8=A1=8C=EF=BC=9B#965?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FreeSql.Provider.GBase.csproj | 2 +- .../FreeSql.Provider.GBase/GBaseProvider.cs | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj b/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj index 9bdebfbe..8bc7b7da 100644 --- a/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj +++ b/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 2.8.100-preview1013 + 2.6.100 true FreeSql;GBase FreeSql 数据库实现,基于 南大通用 8.0 diff --git a/Providers/FreeSql.Provider.GBase/GBaseProvider.cs b/Providers/FreeSql.Provider.GBase/GBaseProvider.cs index a95465cf..e2feb933 100644 --- a/Providers/FreeSql.Provider.GBase/GBaseProvider.cs +++ b/Providers/FreeSql.Provider.GBase/GBaseProvider.cs @@ -1,8 +1,10 @@ using FreeSql.GBase.Curd; using FreeSql.Internal.CommonProvider; using System; +using System.Data; using System.Data.Common; using System.IO; +using System.Linq; using System.Text; using System.Threading; @@ -28,6 +30,26 @@ namespace FreeSql.GBase this.DbFirst = new GBaseDbFirst(this, this.InternalCommonUtils, this.InternalCommonExpression); this.CodeFirst = new GBaseCodeFirst(this, this.InternalCommonUtils, this.InternalCommonExpression); + this.Aop.CommandBefore += (_, e) => + { + if (e.Command.CommandType == CommandType.StoredProcedure) + { + if (e.Command.CommandText.Trim().StartsWith("{call ", StringComparison.OrdinalIgnoreCase) == false) + { + var args = string.Join(", ", Enumerable.Range(0, e.Command.Parameters.Count) + .Select(a => "?")); + var cmdText = $"{{call {e.Command.CommandText}({args})}}"; + + foreach (DbParameter parameter in e.Command.Parameters) + { + if (parameter.DbType == DbType.String && parameter.Size <= 0) + parameter.Size = 255; + } + e.Command.CommandText = cmdText; + } + } + }; + this.Aop.AuditDataReader += (_, e) => { var dbtype = e.DataReader.GetDataTypeName(e.Index);